您可以使用IndexOf 方法在集合中查找项目的索引:
index = cmbExample.Items.IndexOf(key)
ComboBox 本身不包含字符串:它可以包含任何类型,包括字符串等简单类型或包含多个属性的复杂类型(例如 Person 类)
通常,您会通过将数据绑定到集合而不是直接添加项目来填充 ComboBox。这个集合通常包含比字符串更复杂的数据类型,尽管裸字符串也可以工作。
然后,您可以通过使用 IndexOf 方法搜索该集合而不是直接搜索 ComboBox.Items 来找到特定项目的索引:
假设一个字符串集合:
Dim data As New ObservableCollection(Of String)
设置为我们 ComboBox 的 DataContext:
cb1.DataContext = data
<ComboBox x:Name="cb1" ItemsSource={Binding} />
然后我们可以通过搜索数据找到X的索引:
IndexOfX= data.IndexOf(X)
更典型地,组合框的数据将是更大数据对象的属性中的集合,该对象还包含页面的其余数据。该整体数据对象将被设置为页面的 DataContext 并由 ComboBox 继承。
我不清楚 lstExample 和 cmbExample 之间的关系是什么,但您可以将它们绑定到相同(或相关数据),然后将它们相互绑定,让 Xaml 的数据绑定系统保持同步。
从下面的 ListBox 中选择一个项目,ComboBox 将跟随:
<ComboBox x:Name="cmbExample" ItemsSource={Binding} SelectedIndex="{Binding ElementName=lstExample, Path=SelectedIndex}" />
<ListBox x:Name="lstExample" ItemsSource={Binding} />
绑定的项目不必显示相同的内容。 ObservableCollection 可以包含更复杂的类型(例如,具有姓名、电话号码和地址属性的人员),列表框可以显示姓名,而组合框可以显示电话号码和地址。
Xaml 的大部分功能及其优于 WinForms 的优势都来自 DataBinding。我强烈建议您学习如何这样做。您可以从 MSDN 上 Data binding (XAML) 主题中的文档开始。