Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
175 / 123 / 48
Регистрация: 30.11.2012
Сообщений: 1,324
1

Передать доп.параметр в обработчик событий

28.08.2015, 08:48. Показов 3199. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Есть динамически создаваемые button-ы, каждому созданному буттону присваивается один обработчик событий. Отсюда просьба помочь разобраться, как понять от какого буттона в обработчик событий пришло событие?
P.s. Свойство компонентов использовать нельзя, это было бы самое простое при создании заносить в Tag или в Name компонента его порядковый номер в коллекции, а в обработчике событий просто вынимать его от туда (sender as Button).Tag

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
        public static int number = -1; //Порядковый номер последнего добавленного button-a
        List<Button> bt = new List<Button>(); //Создаем коллекцию
        private void add()
        {
            number += 1;
            Button bt_new = new Button();
            bt.Add(bt_new);
            bt[number].DialogResult = DialogResult.OK; 
 
            Controls.Add(bt[number]); //Добавляем элемент на форму
 
            bt[number].BackgroundImage = global::webinterface.Properties.Resources.stop_1027;
            bt[number].FlatStyle = System.Windows.Forms.FlatStyle.Popup;
            bt[number].Location = new System.Drawing.Point(34, 3);
            bt[number].Name = "button";
            bt[number].Size = new System.Drawing.Size(24, 24);
            bt[number].UseVisualStyleBackColor = true;
            bt[number].Click += bt_click; //обработчик событий при нажатии
        }
 
        //Обработчик событий
        void bt_click(object sender, EventArgs e)
        {
            //Как понять от какого button-а пришло событие не используя свойства компонентов?        
        }
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.08.2015, 08:48
Ответы с готовыми решениями:

Обработчик событий в TextBox
Добрый день! как можно реализовать обработчик событий в textBox,чтобы к примеру при вводе...

Обработчик событий, Калькулятор
Не получается реализовать обработчик события калькулятора. Помогите пожалуйста. Вот все, что есть....

Запустить обработчик событий
Странно, спокойно работал в WPF VS12, а как создал WinForms, не могу запустить обработчик событий,...

Добавить обработчик событий на UserControl
Добрый день! я тут сделала свой контрол с шахматами и поэтессами и картинкой и текстом, на нем....

4
8943 / 4855 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
28.08.2015, 09:05 2
C#
1
2
3
4
5
6
void bt_click(object sender, EventArgs e)
    {
        //Как понять от какого button-а пришло событие не используя свойства компонентов?
        Button btn = sender as Button;
        //И дальше делаешь с этой кнопкой всё, что хочешь
    }
1
93 / 94 / 51
Регистрация: 19.06.2013
Сообщений: 323
28.08.2015, 09:11 3
Цитата Сообщение от Nalik Посмотреть сообщение
Свойство компонентов использовать нельзя, это было бы самое простое
Цитата Сообщение от Nalik Посмотреть сообщение
как понять от какого буттона в обработчик событий пришло событие?
Ну вообще-то, в объекте sender уже присутствует эта кнопка (пример описан выше). И все-таки очень интересное задание Ну если Вам так надо, то попробуйте вот так:
C#
1
2
3
4
5
6
7
8
9
private void button1_Click(object sender, EventArgs e)
{
    Button link = (Button)sender;
    foreach(Button btn in list)
        if (btn.Equals(link))
        {
            // btn - найденая кнопка в коллекции
        }
}
0
175 / 123 / 48
Регистрация: 30.11.2012
Сообщений: 1,324
28.08.2015, 10:23  [ТС] 4
Цитата Сообщение от BroDIK Посмотреть сообщение
Ну вообще-то, в объекте sender уже присутствует эта кнопка (пример описан выше). И все-таки очень интересное задание Ну если Вам так надо, то попробуйте вот так:
Может немного не так выразился. Мне просто нужно понимать от какой кнопки пришло событие, чтобы понять в какой ячейки коллекции эта кнопка находится, чтобы потом я мог управлять этой кнопкой. Типа так:
C#
1
2
3
4
private void button1_Click(object sender, EventArgs e)
{
   button1[номер ячейки буттона который пришел].Name = "button"+[номер ячейки буттона который пришел];
}
Тут мы получаем все описания буттона, но мы не понимаем в какой ячейки коллекции он находится.
C#
1
Button link = (Button)sender;
Или я чего-то не понимаю?

Добавлено через 26 минут
Спасибо, вы мне помогли!)
Чтобы понять в какой ячейке коллекции находится button я делаю следующее:
C#
1
2
3
4
5
6
7
8
9
10
int i = -1;
            Button link = (Button)sender;
            foreach (Button btn in bt_res_start)
            {
                i += 1;
                if (btn.Equals(link))
                {
                    bt[i].Name = "button"+i;
                }
            }
0
93 / 94 / 51
Регистрация: 19.06.2013
Сообщений: 323
28.08.2015, 10:56 5
Лучший ответ Сообщение было отмечено Nalik как решение

Решение

Nalik, тогда сделайте проще, через for, а не через "foreach со счетчиком":
C#
1
2
3
4
5
6
7
8
9
10
private void button1_Click(object sender, EventArgs e)
{
    Button link = (Button)sender;
    for (int i = 0; i < bt_res_start.Count; i++)
        if (bt_res_start[i].Equals(link))
        {
            bt_res_start[i].Name = "button" + i;
            break; // По Вашему усмотрению
        }
}
0
28.08.2015, 10:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.08.2015, 10:56
Помогаю со студенческими работами здесь

Передача параметров в обработчик событий
Доброго времени суток, коллеги. Помогите советом, пожалуйста. При загрузке формы выполняется...

Обработчик событий для нескольких кнопок
Доброго времени суток! У меня есть toolStrip, и на нём есть кнопка, по нажатию этой кнопки,...

Один обработчик для разных событий
Пытаюсь создать один обработчик событий для разных событий, например: для множества...

Обработчик событий у динамического объекта класса
Есть класс, динамически создающий PictureBox. class MyClass { public PictureBox...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru