Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2014, 21:49   #1
spirit-ua
Форумчанин
 
Аватар для spirit-ua
 
Регистрация: 04.06.2009
Сообщений: 351
Восклицание Создание массива кнопок и обработчик Click, нужна помощь

Всем Привет!

Помогите новичку!

Создаю массив кнопок (не уверен что правильно, укажите на ошибки) и обработчик один для всех
Код:
        private void Create_WS()
        {
            Button[] WS;
            WS = new Button[5];
            for (int i = 0; i < 5; i++)
            {
                WS[i] = new Button();
                WS[i].Size = new Size(75, 21);
                WS[i].Location = new Point(5, 5 + i * (WS[i].Height + 5));
                WS[i].Tag = i;
                WS[i].Name = "But" + i;
                WS[i].Text = "Button" + " " + i;
                panel2.Controls.Add(WS[i]);
                WS[i].Click += delegate
                {
                    label1.Text = WS[0].Text.ToString(); 
                };
            }
        }
в Лабел выводится текст который на кнопке 0... а как вывести именно текст (Tag) именно той кнопки которая была нажата?

Помогите кодом плиз... только начинаю осваивать Этот язык
Мне разрешено открывать только одну страницу - about :blank. Сперва было скучно, но потом я втянулся. Теперь у меня там живет 2 виртуальных друга, и я слышу голоса из розетки!
spirit-ua вне форума Ответить с цитированием
Старый 02.06.2014, 22:29   #2
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Код:
private void Create_WS()
        {
            Button[] WS;
            WS = new Button[5];
            for (int i = 0; i < 5; i++)
            {
                WS[i] = new Button();
                WS[i].Size = new Size(75, 21);
                WS[i].Location = new Point(5, 5 + i * (WS[i].Height + 5));
                WS[i].Tag = i;
                WS[i].Name = "But" + i;
                WS[i].Text = "Button" + " " + i;
                WS[i].Click +=new EventHandler(Form1_Click);
                this.Controls.Add(WS[i]); //panel2.Controls.Add(WS[i])
                
            }

        }

         private void  Form1_Click(object sender, EventArgs e)
        {
            label1.Text = ((Button)sender).Tag.ToString();
        }
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 02.06.2014, 22:39   #3
spirit-ua
Форумчанин
 
Аватар для spirit-ua
 
Регистрация: 04.06.2009
Сообщений: 351
По умолчанию

GetMax Спасибо!

Весы наклонил
Мне разрешено открывать только одну страницу - about :blank. Сперва было скучно, но потом я втянулся. Теперь у меня там живет 2 виртуальных друга, и я слышу голоса из розетки!
spirit-ua вне форума Ответить с цитированием
Старый 02.06.2014, 23:27   #4
spirit-ua
Форумчанин
 
Аватар для spirit-ua
 
Регистрация: 04.06.2009
Сообщений: 351
По умолчанию

Код:
private void Create_WS(object sender)
        {
            Button[] WS;
            WS = new Button[5]; // вот здесь
            for (int i = 0; i < WS.Length ; i++)
            {
                WS[i] = new Button();
                WS[i].Size = new Size(75, 21);
                WS[i].Location = new Point(5, 5 + i * (WS[i].Height + 5));
                WS[i].Tag = i;
                WS[i].Name = "But" + i;
                WS[i].Text = "Button" + " " + i;
                panel2.Controls.Add(WS[i]);  //this.Controls.Add(WS[i]);
                WS[i].Click += delegate(object s, EventArgs args)
                {
                    var button = s as Button;
                    label1.Text = button.Tag.ToString();
                };
            }
        }
немного по другому вышел из ситуации

еще вопрос:
можно как то НЕ указывать размерность массива, а увеличивать его на 1-цу по клику на кнопке?
Мне разрешено открывать только одну страницу - about :blank. Сперва было скучно, но потом я втянулся. Теперь у меня там живет 2 виртуальных друга, и я слышу голоса из розетки!
spirit-ua вне форума Ответить с цитированием
Старый 03.06.2014, 09:28   #5
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Объявить массив на уровне класса и регулировать его длину в методе
Код:
if (WS == null)
  WS = new Button[1];
else
  WS = new Button[WS.Length + 1];
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681

Последний раз редактировалось GetMax; 03.06.2014 в 09:41.
GetMax вне форума Ответить с цитированием
Старый 03.06.2014, 10:14   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

еще есть списки.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обработчик динамически созданных кнопок andir Общие вопросы Delphi 5 02.03.2013 18:11
обработчик кнопок Nastya_cutie PHP 9 12.05.2012 15:23
Обработчик OnClick у массива кнопок MyLastHit Общие вопросы Delphi 15 18.05.2011 11:33
Сортировка массива. Нужна помощь. vitaly38 Помощь студентам 8 13.05.2010 15:32
Создание содержания, нужна помощь trunx Microsoft Office Word 1 10.06.2008 17:49