下拉更改时,组合框将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;
}

下拉更改时,组合框将selecteindex重置为零

您可以在绑定源之前检查它是否有效。当菜单关闭时,ComboBox有一个DropDownClosed事件发生。你可以从这里操纵它。我认为重置问题只发生在菜单关闭时没有选择任何项目。

MSDN说:

要取消选择当前选中的项,将SelectedIndex设置为-1。如果组合框项是数据绑定项,则不能将其SelectedIndex设置为-1。

来源:MSDN - ComboBox类