Событие нажатия кнопки не отвечает c # - PullRequest
0 голосов
/ 15 января 2019

Проблема, с которой мы сталкиваемся, - это доступ к событию click для кнопки, которая создается в событии click другой кнопки, т.е. нажатие первой кнопки создает новую панель и элементы управления, и теперь мы хотим, чтобы кнопка на этой вновь созданной панели выполнить действие.

Элементы управления были объявлены в верхней части класса следующим образом:

    Panel createElementPage = null;
    TextBox elementDescription = null;
    TextBox elementName = null;
    Button continueButton = null;
    AuditSystem audit;   

Вот выдержка из метода, который генерирует новую панель, часть, которая определяет continueButton, записывается следующим образом:

    public void CE_Click(object sender, EventArgs e)
    {
        createElementPage.Controls.Add(elementDescription);

        continueButton = new Button();
        continueButton.Text = "Continue";
        continueButton.Location = new Point(700, 500);
        continueButton.Size = new Size(100, 50);
        createElementPage.Controls.Add(continueButton);
    }

Мы хотим получить доступ к обработчику события click continueButton, но написанный нами метод, похоже, не работает. Это то, что мы имеем до сих пор:

       private void continueButton_Click(object sender, EventArgs e)
       {

        Console.WriteLine(" something");
        }

Нажатие на кнопку не дает результатов, и мы попробовали несколько решений, таких как реализация отдельного метода eventHandler. У кого-нибудь есть решение для этого?

1 Ответ

0 голосов
/ 15 января 2019

Вы действительно должны подписаться на событие:

continueButton.Click += continueButton_Click;

События должны быть описаны, что они должны обрабатывать. Без этого они не будут «слушать» ничего.

Дружеское примечание: будьте осторожны при добавлении обработчиков "по требованию", как это (то есть за пределами дизайнера). Это на самом деле не применяется (у вас есть новая кнопка каждый раз), но довольно легко случайно подписаться на событие элемента управления несколько раз, и в результате ваш обработчик будет срабатывать несколько раз. Просто приятно осознавать:)

...