Поле со списком Winforms теряет значение автозаполнения на lostfocus
У меня проблемы с комбинированным полем Winforms, теряющим значение, найденное во время автозаполнения, когда пользователь переключается на следующий элемент управления.
Вот пример кода (в виде Nunit Test, который откроет форму):
[Test]
[STAThread]
public void Testing_AsDropDownList()
{
var comboBox = new ComboBox();
comboBox.DropDownStyle = ComboBoxStyle.DropDownList;
comboBox.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems;
comboBox.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend;
comboBox.Items.Add(new ComboPair("aaa", "ItemAAA"));
comboBox.Items.Add(new ComboPair("bbb1", "ItemBBB1"));
comboBox.Items.Add(new ComboPair("bbb2", "ItemBBB2"));
comboBox.Items.Add(new ComboPair("bbb3", "ItemBBB3"));
comboBox.Items.Add(new ComboPair("ccc", "ItemCCC"));
var textBox = new TextBox{ Multiline = true };
comboBox.Leave += (sender, args) => textBox.Text = "On Leave: " + comboBox.SelectedItem;
comboBox.LostFocus += (sender, args) => textBox.Text += " ... On LostFocus: " + comboBox.SelectedItem;
var frm = new Form();
frm.Width = 300;
frm.Height = 100;
comboBox.Dock = System.Windows.Forms.DockStyle.Top;
textBox.Dock = System.Windows.Forms.DockStyle.Bottom;
frm.Controls.Add(comboBox);
frm.Controls.Add(textBox);
Application.EnableVisualStyles();
Application.Run(frm);
}
Чтобы воспроизвести ошибку, выполните следующие действия:
Запустите тест. Форма появится во всплывающем окне ...Теперь введите «bbb3», чтобы выбрать соответствующий элемент с автозаполнением. Теперь вы увидите, что текстовое поле было обновлено с помощью «bbb3» в качестве выбранного элемента.Теперь нажмите TABТеперь вы увидите, что текстовое поле имеет фокус, а выделение со списком изменилось на «bbb1». Также обратите внимание, что в текстовом поле он показывает, что выбранное значение по-прежнему было «bbb3», когда было запущено событие выхода, но затем оно было «bbb1», когда сработало событие потерянного фокуса.
Такое же поведение можно увидеть, если вы щелкнете в поле со списком, чтобы он потерял фокус на шаге 3.
Если вы сделаете что-нибудь еще на шаге 3, у вас не будет этой проблемы. т.е. если вы:
нажмите Ввод'нажмите «вверх», затем «вниз», чтобы вернуться к «bbb3»щелкните элементи т.п.Есть идеи?