2012-01-05 24 views
0

私はデータブックをload時にcombobox.DataSourceにバインドします。私はその後、コンボボックスにDisplayMemberとValueMember(データテーブルから2つの異なる列)を与えます。コンボボックスのSelectedIndexChangedでは、コンボボックスのSelectedValueプロパティを使用したいだけで、MsgBox(combobox.SelectedValue)をテストするだけで、 "Argument 'Prompt'を 'String'型に変換することはできません。なぜそれが値を表示していないのですか?あなたがComboboxのためとすることをDropDownStyleとしてDropDownListを選択しているようにしてくださいする必要があり、すべてのVB.NETバインドされたコンボボックスSelectedValueが表示されません

cbCISoftware.DataSource = dbMaps.Tables("maps").DefaultView 
+0

データバインディングコードと選択されたインデックスが変更されたコードを追加して、再確認することはできますか? –

+0

コードを追加しました! (DisplayMemberもフォーム上で正常に表示されます) – Theveloper

答えて

1

私は、問題は、あなたがテーブルの[既定をバインドする必要があるということであると考えてい結合が働いている。

次にあなたがMsgBox(cbCISoftware.SelectedValue.ToString)

MsgBox(cbCISoftware.SelectedValue) を交換する必要が

は、そうでない場合の結果を得るために、MsgBox(cbCISoftware.Text)は動作しますが、それはおそらくあなたが:-)

探しているものを私はあなたがそれを必要とする場合に結合を行うために、完全なコードを提供することができません。

+0

唯一のことは、データソースを割り当てる際のOnLoadです.SelectValueとしてSystem.Data.DataRowViewを出力するため、combobox_SelectedIndexChangedの例外を作成する必要があります。データソースの割り当て後、正常に動作します。ただし、SelectedValueChangedの下に例外処理を置くと、このイベントは2回発生し、2回目は適切な値でイベントが発生します。ありがとう! – Theveloper

0

まず::(

OnLoad 
    cbCISoftware.DataSource = dbMaps.Tables("maps") 
    cbCISoftware.ValueMember = "id" 
    cbCISoftware.DisplayMember = "name" 

SelectedIndexChanged of cbCISoftware 
    MsgBox(cbCISoftware.SelectedValue) 

SelectedValue.ToString outputs 
    System.Data.DataRowView 
関連する問題