.net ComboBox.Items.IndexOf始终返回-1
我在运行时创建了一个.net ComboBox.Items.IndexOf始终返回-1,.net,winforms,combobox,.net,Winforms,Combobox,我在运行时创建了一个组合框,并将数据源设置为通用列表。当我调用combobBox.Items.IndexOf来设置SelectedIndex属性时,它总是返回-1。该值包含在数据源中,因此它应该能够找到索引 这是我使用的代码的一个示例 Private Function InitDomainCombo(ByVal value as object, ByVal domainList As List(Of DomainNameValue)) As ComboBox Dim cb As Comb
组合框
,并将数据源
设置为通用列表。当我调用combobBox.Items.IndexOf
来设置SelectedIndex
属性时,它总是返回-1
。该值包含在数据源中,因此它应该能够找到索引
这是我使用的代码的一个示例
Private Function InitDomainCombo(ByVal value as object, ByVal domainList As List(Of DomainNameValue)) As ComboBox
Dim cb As ComboBox
cb = New ComboBox
cb.DropDownStyle = ComboBoxStyle.DropDownList
cb.DataSource = domainList
cb.DisplayMember = "Name"
cb.SelectedIndex = cb.Items.IndexOf(CType(value, DomainNameValue))
Return cb
End Function
我猜您试图选择一个尚不存在的项目
尝试:
- 在设置
selectedIndex
之前,将组合框添加到表单中
- 或在设置
selectedIndex
之前,使用combox.CreateControl()
方法强制初始化控件
此线程与一个类似的问题相关:我猜您试图选择一个尚不存在的项目
尝试:
- 在设置
selectedIndex
之前,将组合框添加到表单中
- 或在设置
selectedIndex
之前,使用combox.CreateControl()
方法强制初始化控件
此线程与一个类似的问题相关:显然,它不在这里。我已经检查了domainList.Contains(CType(value,DomainNameValue))以确保值在domainList中。您是否尝试过cb.Items.Contains(CType(value,DomainNameValue))Items
集合是否为空?我不确定组合框
何时会将对象从其数据源拉入其项
集合,可能这还没有发生。显然,它不在那里。我已经用domainList.Contains(CType(value,DomainNameValue))进行了检查,以确保值在domainList中。您尝试过cb.Items.Contains(CType)吗(值,域名值)Items
集合是否可能为空?我不确定ComboBox
何时会将对象从其数据源拉入其Items
集合,可能还没有发生。我已将数据源更改为将对象直接添加到ComboBox。无法使用combox.CreateControl()因为ComboBox是正在创建begin过程中的部分usercontrol。我将数据源更改为将对象直接添加到ComboBox。无法使用combox.CreateControl(),因为ComboBox是正在创建begin过程中的部分usercontrol。