组合框默认值

时间:2011-12-11 11:24:05

标签: vb.net

我有一个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

1 个答案:

答案 0 :(得分:0)

即使您动态创建了UIElement,也会有加载的事件。但是既然你以这种方式创建它,你也应该在代码中挂钩事件处理程序:

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

但也许你会想要对另一个事件过于关注,比如说你的数据库加载了数据......

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

其中SelectionComboBox是您的类的成员,您使用后面的代码初始化/添加。和DataAvailable是你的事件。它可能像:

    Public Event DataAvailable(ByVal DefaultValue As Integer)

因此您可以在事件处理程序中使用该值。 (只是一个想法):=)。

如果你多次添加/删除ComboBox(以避免内存泄漏),请不要忘记删除处理程序