【问题标题】: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)

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

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

同样,我需要做的就是以编程方式设置 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
            

            【讨论】:

              猜你喜欢
              • 2011-04-07
              • 1970-01-01
              • 2014-05-14
              • 1970-01-01
              • 1970-01-01
              • 2011-01-09
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多