我尝试使用从usercontrol到表单的事件,但是当我以表单构造函数创建它时,我就会出现问题。我不知道哪里失败了。有我的代码。
usercontrol
public GameField()
{
InitializeComponent();
button.Click += Button_Clicked;
}
public event EventHandler ButtonClicked;
private void Button_Clicked(object sender, EventArgs e)
{
if (this.ButtonClicked != null) this.ButtonClicked(sender, e);
}
形式
GameField gameField = new GameField(); //Instance of the derived class UserControl
public Form1()
{
InitializeComponent();
gameField.ButtonClicked += new EventHandler(this.btn_Click);
}
private void btn_Click(object sender, EventArgs e)
{
throw new NotImplementedException();
}
有一个问题在此处输入图像描述
我认为您想订阅Button_Clicked
而不是ButtonClicked
中的CC_2。
button.Click += Button_Clicked;
编辑
我看到,我有一个预感,您有两个GameField
实例。您通过表单设计师添加的一个,可能名为gameField1
,以及您在表单中添加的代码中添加的名为gameField
。
如果打开Form1.Designer.cs
,您可以在其中看到gameField1
(或通过设计师添加时给它的任何名称)?
您可以尝试以下操作:
gameField1.ButtonClicked += new EventHandler(btn_Clicked); // name can be other than gameField1, gameField1 is just the automatically generated name by VS