以编程方式设置组合框的值成员

时间:2013-02-01 01:22:10

标签: vb.net combobox visual-studio-2012 selectedvalue

我一直在寻找这个答案。在这里查看:How to set a combobox value但我不确定它是否适用于我(可能是错的,请纠正我,如果我的话)。我正在使用VB.Net,VS2012,我需要以编程方式设置数据绑定的数据块的值成员。

我的代码现在如下(这是从一个循环中分配一堆控件值):

    cboCountry.SelectedValue = row.Item("CCCOUNTRY").ToString

这不会分配任何选定的值。我也尝试过:

    cboCountry.SelectedItem = cboCountry.FindString(row.Item("CCCOUNTRY").ToString)

但这也不起作用。对于这个例子:

  1. 我有一个组合框
  2. 它的值成员属性中有两个值数据绑定,“US”和“CA”
  3. 我分配的行项是其中一个值。
  4. 同样,我需要做的就是以编程方式设置selectedvalue。任何帮助非常感谢!

5 个答案:

答案 0 :(得分:5)

第二次尝试即将结束 - 将SelectedItem替换为SelectedIndex:

cboCountry.SelectedIndex = cboCountry.FindString(row.Item("CCCOUNTRY").ToString)

答案 1 :(得分:2)

您应该使用:

cboCountry.Items.FindByText(row.Item("CCCOUNTRY").ToString()).Selected = True

答案 2 :(得分:2)

今天在vb.net vs2010

中对我有用

cboCountry.SelectedIndex = cboCountry.FindString(“CCCOUNTRY”)。ToString

我的控件和值的名称不同,但我继续以前的用户帖子......

答案 3 :(得分:0)

在VB.NET VS2010的项目中,这对我有用

cboCountry.SelectedIndex = cboCountry.FindString("CCCOUNTRY").ToString

当然项目有不同的名称和价值

答案 4 :(得分:0)

我遇到了同样的问题,但没有找到答案 净。显然,微软还没有解决这个问题。我使用VB作为VS2010 WinForms应用程序(在Windows 7中)。我终于决定编写一个工作代码,无论我在哪里尝试预设ComboBox的选定值,我做了以下更改:

' my_cbx.SelectedValue = data_row.value  ' doesn't work!
PresetSelectedValue(my_cbx, data_row.value)

然后,我添加了以下子程序,以便通过上述更改调用:

Public Sub PresetSelectedValue(ByRef ComboBox As ComboBox, ByVal value As Object)
    Dim item_ndx As Integer

    If ComboBox Is Nothing Then
        '   throw exception?
        Exit Sub
    End If
    With ComboBox
        .Tag = "PresetSelectedValue"
        For item_ndx = 0 To .Items.Count - 1
            .SelectedIndex = item_ndx
            If .SelectedValue = value Then
                Exit For
            End If
        Next
        If item_ndx >= .Items.Count Then
            .SelectedIndex = -1
        End If
        .Tag = ""
    End With
End Sub

最后,我将以下代码添加到我的ComboBox.SelectedValueChanged事件中 (这可以防止用户更改值时的正常事件逻辑 在我上面的子例程中的For循环的每次迭代中执行):

If my_cbx.Tag = "PresetSelectedValue" Then
    Exit Sub
End If