Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 02.06.2014
Сообщений: 49

Связь между несколькими ListBox

12.01.2015, 01:57. Показов 2983. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер, тут появился вопрос, как организовать взаимодействие нескольких Listbox, т.е. допустим у меня есть 3 листбокса и при нажатии на 1 строку в 1 листбоксе в других двух загаралась тоже первая, или нажал на вторую строку во 2 и аналогично загорелись в других двух, заранее спасибо. Или посоветуйте что лучше использовать
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.01.2015, 01:57
Ответы с готовыми решениями:

Прозрачность между несколькими picturebox
Пишу программу обработки снимков со спутника. И столкнулся с такой проблемой. Загружаю в PictureBox картинку с прозрачным фоном. Делаю...

Использование notifyIcon между несколькими формами
Кто знает как можно создать notifyIcon чтоб при переключении двумя и несколькими формами не выявлялся ещё один icon. Получается что-то на...

Передача данных между несколькими datagridview
Добрый день. На одной форме имею несколько datagridview, в первый датагрид, в один из столбцов ввожу текст, каким образом можно передать...

5
 Аватар для CyberRun
33 / 33 / 20
Регистрация: 14.12.2013
Сообщений: 150
12.01.2015, 02:42
что значит "загаралась" ?
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4357 / 3427 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
12.01.2015, 02:50
Делвй через "лист2.SelectedIndex(лист1.SelectedIndex )" и это же для третьего. Пропиши это на клик в свой первый лист бокс
0
0 / 0 / 0
Регистрация: 02.06.2014
Сообщений: 49
12.01.2015, 09:16  [ТС]
загаралось в смысле подсветка при нажатии на какуюто строку в листбоксе
Через SelectIndex попробую, получается на клик надо будет прописать для каждого листбокса, а как узнать что загорелась именно например 2 строка?
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
12.01.2015, 11:58
Лучший ответ Сообщение было отмечено Semen4enko как решение

Решение

Все зависит от того что содержится в listBox. Если данные одинаковые, тогда логично будет создать общий источник данных с соответствующими событиями.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    public class CustomList<T> : List<T>
    {
        public event EventHandler<CustomEventArgs<T>> Selected;
 
        public void Select(T element)
        {
            if (IndexOf(element) < 0)
                throw new Exception("Элемент не найден");
            if (Selected != null)
                Selected(this, new CustomEventArgs<T>(element));
        }
    }
 
    public class CustomEventArgs<T> : EventArgs
    {
        public T Element { get; private set; }
 
        public CustomEventArgs(T element)
        {
            Element = element;
        }
    }
И дальше подписаться на них (фиговый пример, но какой есть)

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
    public partial class Form1 : Form
    {
        private CustomList<string> datasource;
 
        public Form1()
        {
            InitializeComponent();
 
            datasource = new CustomList<string>();    
            datasource.Add("Hatsune Miku");
            datasource.Add("Kagamine Rin");
            datasource.Add("Kagamine Len");
            datasource.Add("Megurine Luka");
 
            datasource.Selected += datasource_Selected;
 
            listBox1.DataSource = datasource;
            listBox2.DataSource = datasource;
 
            listBox1.SelectedIndexChanged += listBox_SelectedIndexChanged;
            listBox2.SelectedIndexChanged += listBox_SelectedIndexChanged;
        }
 
        void datasource_Selected(object sender, CustomEventArgs<string> e)
        {
            if (!listBox1.SelectedValue.Equals(e.Element))
                listBox1.SelectedItem = e.Element;
 
            if (!listBox2.SelectedValue.Equals(e.Element))
                listBox2.SelectedItem = e.Element;
        }
 
        private void listBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            var listBox = sender as ListBox;
            datasource.Select(listBox.SelectedValue as string);
        }
    }
Если у каждого листа свой уникальный список... то тогда только подписка на SelectChange списка и дублирование по возможности у других.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
    public partial class Form1 : Form
    {
        private List<ListBox> listBoxs;
 
        public Form1()
        {
            InitializeComponent();
 
            listBoxs = new List<ListBox>();
            listBoxs.Add(listBox1);
            listBoxs.Add(listBox2);
 
            listBox1.DataSource = new[] { "Hatsune Miku", "Kagamine Rin", "Kagamine Len", "Megurine Luka" };
            listBox2.DataSource = new[] { "Hatsune Miku", "Meiko", "Kaito", "Megurine Luka" };
 
            listBox1.SelectedIndexChanged += listBox_SelectedIndexChanged;
            listBox2.SelectedIndexChanged += listBox_SelectedIndexChanged;
 
        }
 
        private void listBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            var listBox = sender as ListBox;
            if (listBox.SelectedIndex < 0)
                return;
            var value = listBox.SelectedValue.ToString();
            foreach (var list in listBoxs)
                if (list != listBox)
                {
                    if (list.Items.IndexOf(value) > -1)
                        list.SelectedItem = value;
                    else
                        list.SelectedIndex = -1;
                }
 
        }
    }
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4357 / 3427 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
12.01.2015, 12:06
Лучший ответ Сообщение было отмечено Semen4enko как решение

Решение

Semen4enko,
C#
1
msgbox(лист1.selectedindex & " " & лист1.selecteditem)
Как то так

Добавлено через 6 минут
Semen4enko,
прописать для каждого листбокса
ты можешь создать одну процедуру и добавить ей Handler каждого листбокса на клик... а обращаться к конкретному листбоксу из процедуры через параметр sender.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.01.2015, 12:06
Помогаю со студенческими работами здесь

Как переключаться между несколькими формами?
у меня в приложении несколько форм, как мне между ними переключаться?

Связь между несколькими устройствами через интернет
Всем привет! Как создать &quot;связь&quot; между ПК? Например, есть &quot;Хост&quot; в нем можно регулировать значение булевы light, а...

Связь 1:1 между несколькими таблицами Entity Framework
Есть недвижимость 3-х типов земельные участки, квартиры и дома хочу внести адресные данные в общую таблицу и остальные по соответствующим...

Как разорвать связь между Listbox (в новом объекте)?
Привет , не знаю что и где уже .. вроде все правильно делаю но почему-то все не то.. есть команда WPF (по нажатии на CheckBox ,...

Связать radiobutton с listbox, и связь listbox с бд
Здравствуйте! Имеется форма с 2 радиокнопками, 1 listbox и 1 textbox. И есть бд в Access. Мне нужно, чтобы: 1) если выбрано...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru