ComboBox に DataTable をバインドする(実行可能サンプルあり)
📋 目次(クリックで展開)
Windows Forms(.NET 8)で提供されている ComboBox に、DataTable をバインドする方法を紹介します。実行可能サンプルも公開しますので、ダウンロードしていただき、すぐに動作を確認することができます。
フォーム上に ComboBox を配置する
フォームデザイナを利用し、ComboBox と Button コントロールを配置しておきます。

DataTable を用意する
続いて、ComboBox にバインドする DataTable を用意します。コードの詳細は、コメントを参照ください。
private DataTable getData(){ //DataTable オブジェクトの作成 DataTable dt = new DataTable(); //主キーオブジェクトの作成 DataColumn[] primaryColumn = new DataColumn[1];
//列の定義 primaryColumn[0] = dt.Columns.Add("Id", typeof(int)); dt.Columns.Add("Name", typeof(string));
//主キーの設定 dt.PrimaryKey = primaryColumn;
//ダミーデータの作成 dt.Rows.Add(1, "りんご"); dt.Rows.Add(2, "ぶどう"); dt.Rows.Add(3, "いちご"); return dt;}ComboBox に DataTable をバインドする
フォームのロードタイミングで ComboBox に DataTable をバインドし、ComboBox 各項目の値と DataTable 列のマッピング、ComboBox 各項目の表示テキストと DataTable 列のマッピングをそれぞれ行います。
private void Form1_Load(object sender, EventArgs e){ this.comboBox1.DataSource = getData(); //ComboBox に DataTable をバインド this.comboBox1.ValueMember = "Id"; //ComboBox の値プロパティ this.comboBox1.DisplayMember = "Name"; //ComboBox の表示プロパティ}ComboBox の選択項目の値を取得する
アプリケーション実行時の、ComboBox の選択項目の値や表示テキストを取得する実装を行います。ボタンクリック時のイベントに、下記を実装します。
private void button1_Click(object sender, EventArgs e){ //ComboBox の選択項目の取得 var item = this.comboBox1.SelectedItem; //選択項目の Id 列の値 Debug.WriteLine((item as DataRowView)?.Row.ItemArray[0]); //選択項目の Name 列の値(表示値) Debug.WriteLine((item as DataRowView)?.Row.ItemArray[1]);}実行結果
ボタンクリック時に、SelectedItem に含まれる行の項目を Debug.WriteLite で出力ウィンドウに表示できていることがわかります。

サンプルアプリケーション
サンプルアプリケーションは、下記からダウンロードすることができます。 ComboBox_DataTable_CS.zip
💬 コメント