C#3.0で追加される機能の中に
new { プロパティ名 = 値[, プロパティ名 = 値] }
という感じでその場限りの型とかを作れる機能がある。
これってComboBoxのデータソースとかにつっこむのにぴったりじゃない?ってことで出来るか試してみた。
Windowsアプリのプロジェクトを作成。
ComboBoxとButtonを1つ置いてフォームに下のようなコードを書き込む。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace Combo { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { var comboDataSource = new[]{ new { Label = "A", Value = 1 }, new { Label = "B", Value = 2 }, new { Label = "C", Value = 3 }, new { Label = "D", Value = 4 }, new { Label = "E", Value = 5 } }; comboBox1.DataSource = comboDataSource; comboBox1.DisplayMember = "Label"; comboBox1.ValueMember = "Value"; } private void button1_Click(object sender, EventArgs e) { MessageBox.Show(comboBox1.SelectedValue.ToString()); } } }
コードは説明いらないくらいだと思うけど、OnLoadイベントで適当に匿名型でデータをこさえてコンボボックスに設定している。
ボタンクリックのときに、選択された値をメッセージボックスで出力している。
実行してみると、ちゃんと動いた!!
便利便利。