Что вы можете сделать:
- Когда программа выбирает запись во втором списке, установите флаг
- Когда запись в списке выбрана, прочитайте этот флаг
- Если флаг не установлен, отмените выбор элемента
- Снимите флажок
Код мудрый, это эквивалентно следующему ( обратите внимание , чтобы я не писал подобный код в реальном сценарии, но чтобы понять его суть, этого должно быть достаточно)
private bool _valueIsSetProgrammatically = false;
private void listBox1_SelectedValueChanged(object sender, EventArgs e)
{
this._valueIsSetProgrammatically = true;
this.listBox2.SelectedItem = this.listBox1.SelectedItem;
}
private void listBox2_SelectedValueChanged(object sender, EventArgs e)
{
if (!this._valueIsSetProgrammatically)
{
this.listBox2.SelectedItem = null;
}
this._valueIsSetProgrammatically = false;
}
Обратите внимание, что этот фрагмент не выбирает второй список. Если вы хотите сохранить выбранный элемент, вы можете изменить второй метод на
private void listBox2_SelectedValueChanged(object sender, EventArgs e)
{
if (!this._valueIsSetProgrammatically)
{
this.listBox2.SelectedItem = this.listBox1.SelectedItem;
}
this._valueIsSetProgrammatically = false;
}
(Технически флаг в этом случае не нужен, вы можете просто установить SelectedItem
из listBox2
до SelectedItem
из listBox1
.)