2011-12-11 20 views
0

私はvb.netアプリケーションを持っており、表示メンバー(テキスト)と値メンバー(整数)を含むコンボボックスを持っています。コンボボックスのデフォルト値

問題があります: フォームをロードするときにデフォルト値を設定したいのですが、フォームとコンボボックスを動的に作成するときにロードイベントがありません。私は、combobox.selectedvalue = 6を使用していますが、動作しません。

注:selectedindexプロパティは、コンボボックスインデックスと同じではないDBテーブルのプライマリキーから値が取得されることがあるため、使用できません。

コード:

Private Sub fill_combo(ByRef combo As ComboBox, ByVal nodes As HashMap) 
    Dim comboData = New BindingList(Of KeyValuePair(Of Integer, String)) 

    nodes.movefirst() 
    Do While Not nodes.eof 
     If check_atrbValue(nodes.key, nodes.value, "string", "other") Then 
     comboData.Add(New KeyValuePair(Of Integer, String)(nodes.key, nodes.value)) 
     End If 
     nodes.movenext() 
    Loop 
    combo.DataSource = comboData 
    combo.ValueMember = "Key" 
    combo.DisplayMember = "Value" 
    combo.selectedvalue=6 
End Sub 
+0

を追加する場合

はハンドラを削除することを忘れないでくださいあなたはすでにあなたのコードであることを持っているようですcaseは 'combo.SelectedValue = 2'でなければなりません。 – Oded

+0

あなたのご意見は分かりませんでした。 –

+0

odedのコメントは小文字/大文字についてです:Sは選択されたVueと選択されたVueです。 – GameAlchemist

答えて

0

あなたが動的のUIElementを作成した場合でも、ロードされたイベントを持っています。

AddHandler mycombobox.Loaded, Sub(sender As System.Object, 
         e As System.Windows.RoutedEventArgs) _ 
            CType(sender, ComboBox).SelectedIndex = 2 

をしかし、多分あなたはあなたのDBからロードされたデータを記載したものと同様、別のイベントにフックしすぎでしょう...:あなたはこのようにそれを作成したので、しかし、あなたはまた、背後にあるコードでイベントハンドラをフックする必要があります

AddHandler ??.DataAvailable, Sub(???) SelectionComboBox.SelectedIndex = 2 

ここでSelectionComboBoxは、コードを初期化/追加するクラスのメンバです。 DataAvailableはあなたのイベントです。それは次のようになる可能性があります。

Public Event DataAvailable(ByVal DefaultValue As Integer) 

ですので、その値をイベントハンドラで使用できます。 (単なるアイデア):=)。実際にかかわらず、 `combo.selectedvalue = 2`:削除/(メモリリークを回避するために)何回かのComboBox

関連する問題