3

我一直在寻找这个答案。在这里检查:如何设置组合框值,但我不确定它是否适用于我(可能是错误的,如果我是,请纠正我)。我正在使用 VB.Net,VS2012,我需要以编程方式设置数据绑定的组合框的值成员。

我现在的代码如下(这是来自分配一堆控件值的循环内):

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

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

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

但这也不起作用。对于这种情况:

  1. 我有一个组合框
  2. 它的 valuemember 属性中有两个数据绑定值,“US”和“CA”
  3. 我分配给它的行项目是这些值之一。

同样,我需要做的就是以编程方式设置 selectedvalue。非常感谢任何帮助!

4

5 回答 5

9

您第二次尝试已接近尾声——将 SelectedItem 替换为 SelectedIndex:

cboCountry.SelectedIndex = cboCountry.FindString(row.Item("CCCOUNTRY").ToString)
于 2013-02-01T06:48:51.900 回答
2

你应该使用:

cboCountry.Items.FindByText(row.Item("CCCOUNTRY").ToString()).Selected = True
于 2014-10-15T11:18:59.900 回答
2

这今天在 vb.net vs2010 对我有用

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

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

于 2015-10-27T23:24:08.747 回答
0

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

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

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

于 2015-10-27T23:38:05.680 回答
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
于 2016-06-27T22:26:02.780 回答