下拉更改时,组合框将selecteindex重置为零
本文关键字:selecteindex 组合 | 更新日期: 2023-09-27 18:17:03
我有一个绑定到数据源的组合框。并且在按键事件时更新数据源,因此combobox.Items.count是可变的,有时变为零。每当组合框下拉或关闭时,组合框。selecteindex被重置为零,如果项目计数也为零,则会导致argumentoutorange异常。如何防止在组合框下拉或关闭下拉菜单上选择索引更改?
这是放置在按键事件处理程序中的一部分代码:
DataRow[] rows = AllProfilesTable2.Select(string.Format("FullName LIKE '%{0}%'", strFindStr));
DataTable filteredTable = AllProfilesTable2.Clone();
foreach (DataRow r in rows)
filteredTable.ImportRow(r);
cb.DataSource = null;
cb.DataSource = filteredTable.DefaultView;
cb.DisplayMember = "FullName";
cb.ValueMember = "ID";
if (cb.Items.Count > 0) {
cb.DroppedDown = true;
cb.SelectedIndex = -1;
cb.Text = strFindStr;
cb.SelectionStart = strFindStr.Length;
}
else {
cb.DroppedDown = true;
cb.SelectedIndex = -1;
cb.Text = strFindStr;
cb.SelectionStart = strFindStr.Length;
}
您可以在绑定源之前检查它是否有效。当菜单关闭时,ComboBox
有一个DropDownClosed
事件发生。你可以从这里操纵它。我认为重置问题只发生在菜单关闭时没有选择任何项目。
MSDN说:
要取消选择当前选中的项,将SelectedIndex设置为-1。如果组合框项是数据绑定项,则不能将其SelectedIndex设置为-1。
来源:MSDN - ComboBox类