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

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

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

Re[3]: C#コンボボックスの動的に値をセットの方法


(過去ログ 61 を表示中)

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

■35443 / inTopicNo.1)  C#コンボボックスの動的に値をセットの方法
  
□投稿者/ けけ (1回)-(2009/04/30(Thu) 12:37:51)

分類:[.NET 全般] 

分類:[C#] 


はじめて投稿させていただきます。
50個のコンボボックスに、同じ値の項目セットを
したいと思います。(項目は"1","2","3"です)

コンボボックス(cmb1〜cmb50まで)自体はパネル(panel1)上にデザイナで作成しております。

パネル(panel1)上にはコンボボックス(cmb1〜cmb50まで)以外にも
テキストボックスが複数存在するため、まずforeachでpanel1上の
中から、コンボボックスだけを選んで処理をするようにしましたが、
コンボボックスにうまく値をセットできません。
何かよい方法はありますでしょうか。
    private void Item_Set()
{
foreach (Control item in panel1.Controls)
{
//ComboBoxのみ以下の処理を行う
if (item is ComboBox)
{


・・・・・・・・・・




}
}

もしくはコンボボックスの変数名の数字の部分(cmb"x")
のみを変更させながら値をセットするよい方法などが
ありますでしょうか?


よろしくお願いいたします。





環境はWinXP/VS2005/C#/.net2.0です。


引用返信 編集キー/
■35446 / inTopicNo.2)  Re[1]: C#コンボボックスの動的に値をセットの方法
□投稿者/ みきぬ (414回)-(2009/04/30(Thu) 12:44:22)
Windows フォームという前提ですが、ふつーにでけました。

foreach (Control item in panel1.Controls)
{
    ComboBox comboBox = item as ComboBox;
    if (comboBox == null)
    {
        continue;
    }

    comboBox.Items.Add("1");
    comboBox.Items.Add("2");
    comboBox.Items.Add("3");
}

引用返信 編集キー/
■35447 / inTopicNo.3)  Re[1]: C#コンボボックスの動的に値をセットの方法
□投稿者/ Azulean (361回)-(2009/04/30(Thu) 12:45:37)
2009/04/30(Thu) 12:46:16 編集(投稿者)
No35443 (けけ さん) に返信
> コンボボックスにうまく値をセットできません。
> 何かよい方法はありますでしょうか。

「うまく値をセットできません」とは、具体的にどうだったのかな?
少なくとも下記の3ケースは考えられますね。

1.コードを試しに書いてみたけどコンパイルエラーになってうまくいかなかった
2.コンパイルはできたけど実行時に例外エラーで止まった
3.コンパイルエラーも例外も出ないけど期待した通りにならなかった

ここからは推測なのですが、item.Items.Add(""); みたいなこと書いて、コンパイルエラーになっているのかなと思っています。
その場合、ItemsプロパティはComboBoxクラスのメンバーなので、キャストする必要があります。

ComboBox combo = (ComboBox)item;
combo.Items.Add("");

なお、このキャスト演算子ではitemがComboBoxクラスにキャストできない型(LabelやTextBox等)であると例外がスローされます。
事前に排除するか、as演算子でキャストしてnullチェックをするかが必要になります。

foreach (Control item in panel1.Controls)
{
    ComboBox combo = item as ComboBox;
    if (combo == null) continue;
    combo.Items.Add("Test");
}

# 被ったわー

引用返信 編集キー/
■35448 / inTopicNo.4)  Re[2]: C#コンボボックスの動的に値をセットの方法
□投稿者/ Azulean (362回)-(2009/04/30(Thu) 12:49:01)
ついでに、50個とかはしんどいですが、こういったやり方もあるという参考情報を。
このやり方の場合、コンボボックスを増やした場合には配列に加える等の調整が随時必要です。

ComboBox[] list = { comboBox1, comboBox2, comboBox3 };
foreach (ComboBox item in list)
{
    item.Items.Add("Test");
}

引用返信 編集キー/
■35449 / inTopicNo.5)  Re[3]: C#コンボボックスの動的に値をセットの方法
□投稿者/ けけ (2回)-(2009/04/30(Thu) 13:50:19)
みきぬさん、Azuleanさんありがとうございます。

無事解決しました。キャストすればよかったんですね。
参考になりました。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -