【问题标题】:Set combobox's value member programmatically以编程方式设置组合框的值成员
【发布时间】:2013-02-01 01:22:09
【问题描述】:
我一直在寻找这个答案。在这里检查:How to set a combobox value 但我不确定它是否适用于我(可能是错误的,如果我是,请纠正我)。我正在使用 VB.Net,VS2012,我需要以编程方式设置数据绑定的组合框的值成员。
我的代码现在如下(这是在一个循环中分配一堆控件值):
cboCountry.SelectedValue = row.Item("CCCOUNTRY").ToString
这不会分配任何选定的值。我也试过:
cboCountry.SelectedItem = cboCountry.FindString(row.Item("CCCOUNTRY").ToString)
但这也不起作用。对于这种情况:
- 我有一个组合框
- 它的 valuemember 属性中有两个数据绑定值,“US”和“CA”
- 我分配给它的行项目是这些值之一。
同样,我需要做的就是以编程方式设置 selectedvalue。非常感谢任何帮助!
【问题讨论】:
标签:
vb.net
combobox
visual-studio-2012
selectedvalue
【解决方案1】:
您的第二次尝试已接近尾声——将 SelectedItem 替换为 SelectedIndex:
cboCountry.SelectedIndex = cboCountry.FindString(row.Item("CCCOUNTRY").ToString)
【解决方案2】:
你应该使用:
cboCountry.Items.FindByText(row.Item("CCCOUNTRY").ToString()).Selected = True
【解决方案3】:
今天在 vb.net vs2010 中这对我有用
cboCountry.SelectedIndex = cboCountry.FindString("CCCOUNTRY").ToString
对我来说控件和值的名称不同,但我继续之前的用户帖子...
【解决方案4】:
这对我来说在一个使用 VB.NET VS2010 的项目中很有效
cboCountry.SelectedIndex = cboCountry.FindString("CCCOUNTRY").ToString
当然项目有不同的名称和值
【解决方案5】:
我也遇到了同样的问题,但没有找到答案
网。显然,微软还没有解决这个问题。我正在将 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