Снять выделения со всех 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();
                    }
                }
            }
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.357 из 5