C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: タブ内にある全テキストボックスの


(過去ログ 116 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■68306 / inTopicNo.1)  タブ内にある全テキストボックスの
  
□投稿者/ Pirror (7回)-(2013/10/09(Wed) 22:06:59)

分類:[C#] 

1つのフォームに
一つのボタン
Nameがタブチェックというボタンがあり、

Tabが複数あって、NameをTab1,Tab2とする
また、
Tab1にはTxt1a.Text,Txt1b.Text,----,Txt1n.Text
Tab2にはTxt2a.Text,Txt2b.Text,----,Txt2n.Text

と各Tabにはテキストボックスがn個あるとします。


タブチェックというボタンを押した時に、
各Tab1,Tab2のテキストのNullCheck(空文字チェック)をして、
NullがあったテキストのNameをメッセージボックスに表示する
というプログラムを書きたいのですが、
どの様に書いたらよいのか分かりません。

コードの書き方が分かる方がいましたら、
よろしくお願いします。


引用返信 編集キー/
■68311 / inTopicNo.2)  Re[1]: タブ内にある全テキストボックスの
□投稿者/ shu (396回)-(2013/10/10(Thu) 10:23:04)
No68306 (Pirror さん) に返信

Controlsを使用して該当テキストボックスを探すか
FindControlで名前を指定して該当テキストボックスを探すと良いです。




引用返信 編集キー/
■68313 / inTopicNo.3)  Re[1]: タブ内にある全テキストボックスの
□投稿者/ 魔界の仮面弁士 (369回)-(2013/10/10(Thu) 11:02:03)
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));
    }
}

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -