Поле со списком 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);
}
Чтобы воспроизвести ошибку, выполните следующие действия:
Запустите тест. Форма появится во всплывающем окне ...Теперь наберите 'Баа3' выбрать соответствующий пункт с автозаполнением. Теперь вы увидите, что текстовое поле было обновленоБаа3' как выбранный вами элемент.Теперь нажмите TABТеперь вы увидите, что текстовое поле имеет фокус, и выбор комбо изменился на 'bbb1', Также обратите внимание, что в текстовом поле он показывает, что выбранное значение все еще былоБаа3' когда уволили, но потом это былоbbb1' когда событие потерянного фокуса срабатывает.
Такое же поведение можно увидеть, если вы щелкнете в поле со списком, чтобы он потерял фокус на шаге 3.
Если вы сделаете что-нибудь еще на шаге 3, он выиграетУ меня нет этой проблемы. т.е. если вы:
Нажмите 'войти'Нажмите 'вверх» затем 'вниз' вернуться кБаа3"щелкните элементи т.п.Есть идеи?