Короче
Когда я набираю символ в ComboBox, нажимаю Alt + Down, а затем Enter или Tab, событие SelectedIndexChanged не срабатывает, даже если значение SelectedIndex меняется! Почему не запускается событие?
Обновление Та же ошибка возникает, если вы вводите символ, нажимаете Alt + Down, а затем нажимаете Esc. Вы ожидаете, что Esc отменит изменение. Однако SelectedIndex изменяет , а событие SelectedIndexChanged не срабатывает.
Что должно произойти, если вы просто наберете Alt + Down, используйте клавиши со стрелками для перехода к записи и затем введите Esc? Следует ли вернуть выбранный индекс к исходному значению?
Не так уж и коротко
У меня есть приложение WinForm с ComboBox на нем. Событие SelectedIndexChanged ComboBox связано с обработчиком событий, который показывает SelectedItem в элементе управления Label. Коллекция «Элементы ComboBox» имеет три значения: «Один», «Два» и «Три».
Я также добавил кнопку, которая показывает SelectedIndex. Он показывает, что SelectedIndex изменился . Таким образом, даже несмотря на то, что SelectedIndex действительно меняется, событие SelectedIndexChanged не срабатывает!
Если я просто введу допустимое значение, например One
, событие тоже не сработает, но в этом случае щелкните кнопка показывает, что SelectedIndex действительно не изменился. Так что в этом случае поведение нормальное.
Чтобы воспроизвести, создайте форму и добавьте ComboBox, Label и Button. Поместите следующий код в Form1.cs:
using System;
using System.Windows.Forms;
namespace ComboBoxSelectedIndexChanged
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
comboBox1.Items.AddRange(new object[] {
"One",
"Two",
"Three"
});
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
label1.Text = "Selected index: " + comboBox1.SelectedIndex;
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("Selected item: " + comboBox1.SelectedItem +
"\nSelected index: " + comboBox1.SelectedIndex);
}
}
}