С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/18: Рейтинг темы: голосов - 18, средняя оценка - 5.00
46 / 46 / 12
Регистрация: 03.08.2012
Сообщений: 215

Как получить индекс динамически созданного button при нажатии

01.01.2013, 19:38. Показов 3380. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
создаю циклом button:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 for (int i = 1; i <= 10; i++)
            {
                Button b = new Button();
 
                b.Left = x;
                b.Top = y;
                b.Size = BtnSize;
                b.Parent = this;
                b.Tag = i; 
                b.Click += Button_Click;
 
                if ((i % Width) == 0)
                {
                    x = Left;
                    y += Top + BtnSize.Height;
                }
                else
                {
                    x += Left + BtnSize.Width;
                }
            }
обработчик клика:
C#
1
2
3
4
private void Button_Click(object sender, EventArgs e)
        {
                 int y;
        }
как можно в обработчике клика, в переменную y записать индекс нажатого button?
т.е. если был нажат 1 buuton, y = 1.
если 6, то y = 6....
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.01.2013, 19:38
Ответы с готовыми решениями:

Получить текст из динамически созданного TextBox
Доброго дня форумчане! Не могу получить введенный текст в динамически созданного TextBox //Textbox TextBox anserw...

При нажатии на Button каждый раз создается новый компонент (button/label/textbox)
Как реализовать?

Создание button без заднего фона, и подключение коротких звуков при нажатии button
Т.к. я только начинающий юзер C#, хотел бы спросить, если кто сможет подсказать, как убрать задний фон на баттоне, что б он вливался в фон...

4
 Аватар для Doomer3D
180 / 180 / 32
Регистрация: 23.11.2012
Сообщений: 344
Записей в блоге: 1
01.01.2013, 20:10
C#
1
y = (int)((sender as Button).Tag);
2
14 / 14 / 4
Регистрация: 31.12.2012
Сообщений: 71
01.01.2013, 20:36
Цитата Сообщение от Doomer3D Посмотреть сообщение
C#
1
y = (int)((sender as Button).Tag);
а можешь объяснить как ты так лихо сделал??
0
46 / 46 / 12
Регистрация: 03.08.2012
Сообщений: 215
01.01.2013, 20:43  [ТС]
а если точно так же создавать PictureBox.
почему в обработчике клика не хочет работать вот этот код?
C#
1
(sender as PictureBox).Image = img[1];
все, разобрался. не тут ошибка была.
0
 Аватар для Doomer3D
180 / 180 / 32
Регистрация: 23.11.2012
Сообщений: 344
Записей в блоге: 1
02.01.2013, 10:05
Цитата Сообщение от Lirik5 Посмотреть сообщение
а можешь объяснить как ты так лихо сделал??
В любом событии вида EventHandler первый аргумент (sender) как правило передает в себе источник события. Если вы нажали на кнопку, sender - это та самая кнопка, если изменили текст в TextBox'е, это текстовое поле передается как sender. Поэтому, когда вы вешаете на несколько событий один обработчик, sender позволяет узнать, какой из объектов сгенерировал свойство.

C#
1
y = (int)((sender as Button).Tag);
C#
1
sender as Button
Так мы приводим тип объекта sender к типу "кнопка" (как вариант, можно было сделать sender as Control)
C#
1
(sender as Button).Tag
Нас интересует свойство Control.Tag - туда автор записывал идентификатор кнопки
C#
1
(int)((sender as Button).Tag)
Очередное преобразование типа, Tag - это свойство типа object, а нам надо int, но писать Tag as int нельзя.

Надеюсь, стало понятнее?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.01.2013, 10:05
Помогаю со студенческими работами здесь

Как вывести текст в Label при нажатии Button?
Как сделать метод чтобы при введении числа в textBox1 и введении знака в textBox2 и введении x в textBox3 и введении числа в textBox4...

Как добавить дочерний узел в treeview при нажатии на button
Как добавить дочерний узел в treeview при нажатие на button? понимаю что нужно сначало выделить элемент(узел родительский) а потом уже...

Как из textbox1 вывести написанный текст в textbox2 при нажатии button?
Добрый день! Как мне из textbox1 вывести текст на textbox2 при нажатии на button?

Требуется ли очистка ресурсов при удалении динамически созданного контрола?
Нужно ли очищать ресурсы и отключать подписку на события при удалении контролов созданных динамически или сборщик мусора сам все сделает? ...

Как сделать на button чтобы при нажатии открывалось окно с выбором файла?
Не знаю как реализовать в коде следующую задачу: по нажатию на button должно открываться окно с выбором файла(картинки), затем эта картинка...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru