Скажем, у нас есть следующий код в приложении Windows:
ComboBox comboBox = new ComboBox()
{
AutoCompleteMode = AutoCompleteMode.SuggestAppend,
AutoCompleteSource = AutoCompleteSource.ListItems,
DataSource = new string[] { "", "Ark", "Boat", "Bucket" },
DropDownStyle = ComboBoxStyle.DropDownList
};
this.Controls.Add(comboBox);
TextBox textBox = new TextBox()
{
Left = comboBox.Right,
Top = comboBox.Top,
ReadOnly = true
};
textBox.DataBindings.Add("Text", comboBox, "SelectedValue");
this.Controls.Add(textBox);
Здесь нет никакой магии, просто ComboBox
привязан к списку строк. TextBox
отображает SelectedValue
ComboBox
.
Я получаю неожиданное поведение при вводе "Bucket" в ComboBox
и вкладке. По какой-то причине ComboBox
отображает "Лодка", но TextBox
отображает "Ведро". Я ожидаю, что оба они отобразят "Bucket" .
Он ведет себя как ожидалось, если я изменю DropDownStyle
на DropDown
, но я не хочу, чтобы пользователи могли вводить что угодно. Они должны иметь возможность вводить только те элементы, которые указаны в списке.
Еще интереснее то, что, набрав "Bucket" и уйдя, если я снова наберу "Bucket" , он отобразит "Bucket" в обоих. Если я сделаю третью попытку, она вернется к "Лодке" для ComboBox
и "Bucket" для "TextBox". Так что кажется, что он едет на велосипеде через все B.
Я не заметил этого, пока не обновился с XP до Windows 7. Я не понимаю, как это может быть связано с этим, но я все равно отказываюсь.
Если это правильно, может ли кто-нибудь сказать мне, что я должен делать для достижения ожидаемого поведения?
UPDATE Казалось бы, это связано с Windows 7. Все работает так, как ожидалось, в режиме Windows XP. Может ли кто-нибудь еще запустить Windows 7 попробовать мой код и убедиться, что я не сумасшедший?