我们遇到的问题是访问在另一个按钮的单击事件中创建的按钮的单击事件,即单击第一个按钮会生成一个新面板和控件,我们现在希望这个新创建的面板上的按钮执行操作。
控件已在类的顶部声明,如下所示:
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);
}
我们想访问 continueButton 的单击事件处理程序,但我们编写的方法似乎不起作用。这就是我们目前所拥有的:
private void continueButton_Click(object sender, EventArgs e)
{
Console.WriteLine(" something");
}
单击该按钮不会产生任何结果,我们已经尝试了一些解决方案,例如实现单独的 eventHandler 方法。有人对此有解决方法吗?
您必须实际订阅该事件:
continueButton.Click += continueButton_Click;
需要告诉事件它们应该处理什么。没有这一点,他们就不会"听"任何事情。
友情提示:像这样"按需"添加处理程序时要小心(即在设计器之外)。它在这里并不真正适用(您每次都有一个新按钮),但很容易多次意外订阅控件的事件,因此您的处理程序将触发多次。很高兴意识到:)