タブコントロールに追加したタブが名前で参照できない

C#でタブコントロールにタブを追加するコードを書いて、タブの名前で参照しようとすると例外が起きるわけです。また、うまくいかない。



例外が起きたのは、以下のコード。

            this.tabControl1.TabPages.Add("Test1");
            TabPage tb1 = this.tabControl1.TabPages["Test1"];
            tb1.Controls.Add(new Label() { Text = "Test1" });   // 例外発生!

「Test1」というタブページを追加して「Test1」で参照して、ラベルを追加するという簡単なコードなのだが、3行目で例外が起きる。なぜ?デバッグすると、追加したはずのタブページが見つからずnullになっていた。

解決策

1行目のタブを追加するときに、引数を2つ指定する必要がある。引数が1個だけだと、タブのタイトルを指定するだけで名前が付かない。そのため、名前で参照するとnullが返ってくる。引数を2つ指定すると、最初の引数が名前、2番目の引数がタイトルになる。


            this.tabControl1.TabPages.Add("Key2", "Test2");
            TabPage tb2 = this.tabControl1.TabPages["Key2"];
            tb2.Controls.Add(new Label() { Text = "Test2" });

これでOK。

引数1個のときは、タイトルにすると同時に名前にも設定してくれればよいのにね。

コメント

このブログの人気の投稿

varchar をデータ型 numeric に変換中に、算術オーバーフロー エラーが発生しました。