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

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

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

Re[2]: コンボボックスのDataSource設定


(過去ログ 148 を表示中)

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

■86350 / inTopicNo.1)  コンボボックスのDataSource設定
  
□投稿者/ チュート (1回)-(2018/01/22(Mon) 14:45:28)

分類:[VB.NET/VB2005 以降] 

コンボボックスに表示名と値をセットするため、
以前、表示名と値のカラムのあるDataTableを作成し、
これに{値, 表示名}のペアの組み合わせをコード上で追加し、
これをコンボボックスのDataSourceにするようなことをやっていました。

Const COL_ID As String = "ID"
Const COL_TEXT As String = "TEXT"
Dim dt As New DataTable
dt.Columns.Add(COL_ID, GetType(Integer)) 'ID
dt.Columns.Add(COL_TEXT, GetType(String)) 'TEXT
dt.Rows.Add(0, "通常")
dt.Rows.Add(1, "注意")
dt.Rows.Add(2, "警告")
Combobox1.DataSource = dt
Combobox1.DisplayMember = COL_ID 'ID
Combobox1.DisplayMember = COL_TEXT 'TEXT

ただ、わざわざDataTableを作成せず、
もっと簡単にコンボボックスのDataSourceに
この{値, 表示名}の情報をセットする方法はないでしょうか?
ちなみにVB 2013を使用しています。
引用返信 編集キー/
■86351 / inTopicNo.2)  Re[1]: コンボボックスのDataSource設定
□投稿者/ PANG2 (208回)-(2018/01/22(Mon) 15:12:56)
KeyValuePair配列とか。

KeyValuePair<int, string>[] data
= {
new KeyValuePair<int, string> (0, "通常"),
new KeyValuePair<int, string> (1, "注意"),
new KeyValuePair<int, string> (2, "警告"),
};

comboBox1.ValueMember = "Key";
comboBox1.DisplayMember = "Value";
comboBox1.DataSource = data;
引用返信 編集キー/
■86352 / inTopicNo.3)  Re[1]: コンボボックスのDataSource設定
□投稿者/ shu (1078回)-(2018/01/22(Mon) 15:15:54)
No86350 (チュート さん) に返信

『もっと簡単に』に合うか分かりませんが
List(of クラス)を使う方法があります。

例) この例では既存のDictionaryクラス(KeyValuePair)を使用しているので
アイテム用のクラス定義も不要となります。

        Dim dic As New Dictionary(Of Integer, String)

        dic.Add(1, "abc")
        dic.Add(2, "cde")
        dic.Add(3, "fgh")
        ComboBox1.ValueMember = "key"
        ComboBox1.DisplayMember = "value"
        ComboBox1.DataSource = dic.ToList

引用返信 編集キー/
■86353 / inTopicNo.4)  Re[1]: コンボボックスのDataSource設定
□投稿者/ 魔界の仮面弁士 (1543回)-(2018/01/22(Mon) 15:21:45)
No86350 (チュート さん) に返信
> Combobox1.DisplayMember = COL_ID 'ID
> Combobox1.DisplayMember = COL_TEXT 'TEXT

ValueMember ではなく?


> もっと簡単にコンボボックスのDataSourceに
> この{値, 表示名}の情報をセットする方法はないでしょうか?
> ちなみにVB 2013を使用しています。

VB2013 なら、KeyValuePair かな。

Dim dic As New Dictionary(Of Integer, String)() From {
 {0, "通常"}, {1, "注意"}, {2, "警告"}
}
ComboBox2.DataSource = dic.ToArray()
ComboBox2.DisplayMember = "Value"
ComboBox2.ValueMember = "Key"
引用返信 編集キー/
■86354 / inTopicNo.5)  Re[2]: コンボボックスのDataSource設定
□投稿者/ チュート (2回)-(2018/01/22(Mon) 15:41:03)
皆様、早速のご回答ありがとうございました。
KeyValuePairやDictionaryを使ってうまくできました。


No86353 (魔界の仮面弁士 さん) に返信
> ■No86350 (チュート さん) に返信
>>Combobox1.DisplayMember = COL_ID 'ID
>>Combobox1.DisplayMember = COL_TEXT 'TEXT
>
> ValueMember ではなく?

ごめんなさい、ご指摘の通りです。


解決済みとさせて頂きます。
ご協力ありがとうございました。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -