|
■No68306 (Pirror さん) に返信
> Tabが複数あって、
これは、 TabControl のことでしょうか。
それとも TabPage のことでしょうか。
> NameをTab1,Tab2とする
とりあえず、TabControl が一つあり(tabControl1)、
その中に 2 つの TabPage (Tab1, Tab2) があるという仮定で回答します。
> また、
> Tab1にはTxt1a.Text,Txt1b.Text,----,Txt1n.Text
> Tab2にはTxt2a.Text,Txt2b.Text,----,Txt2n.Text
> と各Tabにはテキストボックスがn個あるとします。
Tab の上にあるテキストボックスはコレだけですか?
(他の命名規約になっている TextBox もありますか?)
> 各Tab1,Tab2のテキストのNullCheck(空文字チェック)をして、
NullCheck というのは自作したメソッドでしょうか?
戻り値の意味はおろか、引数に何を渡すのか(TextBox なのか String なのか TabPageなのか)すら
分かりませんが、とりあえず bool NullCheck(string s) なシグネチャと仮定しておきます。
要は、String.IsNullOrEmpty や String.IsNullOrWhiteSpace メソッドと同種のものというイメージです。
> NullがあったテキストのNameをメッセージボックスに表示する
ここでいう「Nullがある」とは、どのような状況を指していますか?
文字列が無い(長さゼロの文字列)ということでしょうか?
そもそも TextBox の Text プロパティというものは、
Txt1a.Text = null;
Txt1b.Text = "\0";
などとしても、null や "\0" が返されることは無かったはず…。
(上記いずれも、Text プロパティからは "" という空文字列が返される)
> というプログラムを書きたいのですが、
> どの様に書いたらよいのか分かりません。
仕様で一部分からない点がありますが、上記仮定ならこんな感じで。
private void タブチェック_Click(object sender, EventArgs e)
{
int count = 14; // n個
List<string> names = new List<string>();
TabPage[] tabs = new TabPage[] { Tab1, Tab2 };
for (int t = 0; t < tabs.Length; t++)
{
for (int i = 0; i < count; i++)
{
string sName = string.Format("Txt{0}{1}", t + 1, (char)(i + (int)'a'));
TextBox txt = (TextBox)tabs[t].Controls.Find(sName, true).FirstOrDefault();
if (txt != null && NullCheck(txt.Text))
{
names.Add(sName);
}
}
}
if (names.Count == 0)
{
MessageBox.Show("該当なし");
}
else
{
MessageBox.Show("NullCheck が true を返したもの\r\n" + String.Join(",", names));
}
}
|