• ベストアンサー

コンボボックスで表示とソース内での値を代えたい

DBからA列 B列を取得して コンボボックスにA列 B列をセットします 画面のコンボにはA列を表示させておき A列のhogeが選択されたら内部的には B列を使って処理をさせたいと考えています 今の所A列のみのセットは出来ているのですがB列も同時に扱うための 方法がわかりません 何がご存知の方居ましたらご教授お願いします。 環境は Visual Studio 2005 の VB 2005を使用しています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

コンボ/リストボックスの [表示/内部データ]の切り替えは ・DisplayMember ・ValueMember ・DataSource がキーワードです。 簡単なサンプルです。 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load   Dim l_dtb As DataTable = データテーブル()   '表示値を設定   Me.ComboBox1.DisplayMember = l_dtb.Columns(0).ColumnName   '内部値を設定   Me.ComboBox1.ValueMember = l_dtb.Columns(1).ColumnName   'データソースにテーブルを指定   Me.ComboBox1.DataSource = l_dtb End Sub Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged   If ComboBox1.SelectedItem Is Nothing Then     Return   End If   Me.Text = String.Format( _       "表示項目:{0} 内部値:{1} ", _       Me.ComboBox1.Text, _       Me.ComboBox1.SelectedValue _   ) End Sub Private Function データテーブル() As DataTable   Dim l_dtbデータテーブル As New DataTable()   Dim l_drwデータロウ As DataRow   Dim i As Integer   l_dtbデータテーブル.Columns.Add("キャラ", System.Type.GetType("System.String"))   l_dtbデータテーブル.Columns.Add("コード", System.Type.GetType("System.Int32"))   For i = Asc("A") To Asc("Z")     l_drwデータロウ = l_dtbデータテーブル.NewRow     l_drwデータロウ.Item("キャラ") = Chr(i)     l_drwデータロウ.Item("コード") = i     l_dtbデータテーブル.Rows.Add(l_drwデータロウ)   Next   Return l_dtbデータテーブル End Function

noname#17894
質問者

お礼

回答ありがとうございます .NET 2.0から追加された機能に表示値と内部値があるのは初めて知りました サンプルソースも動作を確認する上で非常に解りやすく 大変参考になりました

関連するQ&A