Как я создаю 5 кнопок и присваиваю отдельные события щелчка динамично? [закрытый]

Я использую Оборот WinSplit для возможности расположения клавиатуры, и я использую bblean в качестве замены для Проводника. Это имеет несколько возможностей рабочей области, созданных прямо в, и это позволяет Вам настраивать его точно, как Вы хотите, чтобы он посмотрел.

11
задан HaveNoDisplayName 27 March 2016 в 06:29
поделиться

3 ответа

Это то, о чем говорит Ник, - это два ваших варианта (вы сможете запустить этот код и увидеть оба варианта ):

  public Form1()
  {
     InitializeComponent();

     for (int i = 0; i < 5; i++)
     {
        Button button = new Button();
        button.Location = new Point(20, 30 * i + 10);
        switch (i)
        {
           case 0:
              button.Click += new EventHandler(ButtonClick);
              break;
           case 1:
              button.Click += new EventHandler(ButtonClick2);
              break;
           //...
        }
        this.Controls.Add(button);
     }

     for (int i = 0; i < 5; i++)
     {
        Button button = new Button();
        button.Location = new Point(160, 30 * i + 10);
        button.Click += new EventHandler(ButtonClickOneEvent);
        button.Tag = i;
        this.Controls.Add(button);
     }
  }

  void ButtonClick(object sender, EventArgs e)
  {
     // First Button Clicked
  }
  void ButtonClick2(object sender, EventArgs e)
  {
     // Second Button Clicked
  }

  void ButtonClickOneEvent(object sender, EventArgs e)
  {
     Button button = sender as Button;
     if (button != null)
     {
        // now you know the button that was clicked
        switch ((int)button.Tag)
        {
           case 0:
              // First Button Clicked
              break;
           case 1:
              // Second Button Clicked
              break;
           // ...
        }
     }
  }
34
ответ дан 3 December 2019 в 01:09
поделиться

Полагаю, вы в петле и делаете что-то вроде этого?

Button newButton = new Button();
newButton.Click += new EventHandler(newButton_Clicked);

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

Оттуда вы можете предпринять соответствующие действия.

8
ответ дан 3 December 2019 в 01:09
поделиться

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

4
ответ дан 3 December 2019 в 01:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: