Снять выделения со всех ListBox - C#
Формулировка задачи:
Имеются динамические ListBox'ы, создаю для них динамический обработчик выделения, и мне нужно что бы, когда выделяю элемент в одном ListBox'е, в остальных выделение снимались. Т.е. в настоящее время всегда был только выделенный ListBox. Ниже моя реализация, но при выделении в другом ListBox'e очищаются все, и вновь выделенный тоже.
private void lb_SelectedIndexChanged(object sender, EventArgs e)
{
ListBox currentList = (ListBox)sender;
MessageBox.Show(currentList.Name.ToString());
//MessageBox.Show(currentList.GetType().ToString());
//ListBox cl = new ListBox();
foreach (Control cnt in tlp.Controls)
{
ListBox tb = cnt as ListBox;
if (tb != currentList)
{//MessageBox.Show(tb.Name.ToString());
try
{
tb.ClearSelected();
}
catch { }
}
}
}Решение задачи: «Снять выделения со всех ListBox»
textual
Листинг программы
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
ListBox listBox = sender as ListBox;
if (!listBox.Focused) return;
foreach (Control ctrl in this.Controls)
{
if (ctrl is ListBox)
{
ListBox box = ctrl as ListBox;
if (box != listBox)
{
box.ClearSelected();
}
}
}
}