Но тогда с SelectedIndex = -1 < /p>
Код: Выделить всё
combobox1.SelectedIndex = 0 ; // will NOT fire the event.
< /code>
Но < /p>
combobox1.SelectedIndex = 1 ; // or higher number WILL fire the event.
Я проверил поведение в простой форме.
namespace cmbTest
{
public partial class Form1 : Form
{
private BindingList items = new BindingList();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
comboBox1.DataSource = items;
loadItems();
}
private void loadItems()
{
items.Add("chair");
items.Add("table");
items.Add("coffemug");
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
MessageBox.Show("Fired with selected item index:" + comboBox1.SelectedIndex);
}
private void button1_Click(object sender, EventArgs e)
{
int index = comboBox1.SelectedIndex;
// Clear and reload items for whatever reason.
items.Clear();
loadItems();
// try select old item index; if it doesnt exists, leave it.
try { comboBox1.SelectedIndex = index; }
catch { }
}
}
}
< /code>
Форма имеет Combobox1 и кнопку1. < /p>
Редактировать для ясности (я надеюсь): < /p>
Запустить программу < /li>
Выберите «стул». Сообщение "Запускается с выбранным индексом элементов: 0" < /li>
Кнопка нажима. Сообщение "Запускается с выбранным индексом элементов: -1" < /li>
Выберите «Таблица». Сообщение "Запускается с выбранным индексом элементов: 1" < /li>
Кнопка нажима. Сообщения «Опубликованы с выбранным индексом элемента: -1» и
», выпущенные с выбранным индексом элементов: 1». < /Li>
< /ol>
Я ожидаю получить два Сообщения при нажатии кнопки, когда выбирается «стул», так как я программно изменяет индекс на 0. < /p>
Итак, почему это не работает, как я ожидаю, и что будет приемлемо обходной путь?
Подробнее здесь: https://stackoverflow.com/questions/384 ... ng-index-0