2017-10-17 24 views
1

对于这个问题我做了一个简单的类:查找ComboBox项

Public Class ListBoxEntry 
    Public Property ID As Integer 
    Public Property Text As String 

    Public Overrides Function ToString() As String 
     Return Text 
    End Function 
End Class 

我创建了这个类的一些实例并将它们添加到组合框:

... 
While DR.Read 
    LI = New ListBoxEntry 
    LI.ID = DR("ID") ' ID is an integer value 
    LI.Text = DR(Feldname) ' Feldname is a string 
    cmbList.Items.Add(LI) 
End While 

我不能得到一个工作代码通过代码将组合框设置为特定值。 例如这些是我的三个条目(ID - Feldname):

1 - One (value 1, shown text in combobox "One") 
2 - Two (value 2, shown text in combobox "Two") 
3 - Three (value 3, shown text in combobox "Three") 

Combobox1.SelectedIndex = somehow(2) <- here I want to set the combobox to the second entry (2), so "two" is selected 

我需要哪种代码和平?

+0

显然你可以使用任何你想要的命名约定,但为什么你认为你需要那个类型名称上的'cls'前缀?您始终使用.NET Framework中的类,但没有这样的前缀,因此它的用途是什么? – jmcilhinney

+0

我知道 - 我为这个问题添加了cls的东西,并认为这会有所帮助。我不会再这样做。感谢您的提示 –

+0

鉴于'Class'关键字在声明中的类名前面,它没有任何帮助。即使没有声明,人们通常会认为大多数类型都是类,这绝对应该是这种情况,所以你只需要指出何时是结构。无论如何,这通常无关紧要,但视情况而定,这可能至关重要。 – jmcilhinney

回答

2

您应该将类​​的实例添加到数组或集合,然后将其绑定到您的ComboBox(例如,

With ComboBox1 
    .DisplayMember = "Text" 
    .ValueMember = "ID" 
    .DataSource = myList 
End With 

然后,您可以指定一个ID价值的ComboBoxSelectedValue财产与ID选择项目,例如

ComboBox.SelectedValue = 2 

这将在控件中显示“两个”。