我正在使用Windows窗体C#.
我有主要Form和孩子form.这个活动在孩子身上Form,我在主要活动中订阅了这个活动Form.问题是,当我单击button1子窗体时,它什么都不做(它应该触发事件以便textBox1打印文本),因为null尽管主窗体已经订阅了该事件,但事件仍然存在.难道我做错了什么?请点击一下,如何button1点击活动.
儿童表格:
public partial class ChildForm : Form
{
public event EventHandler MyEvent;
private void button1_Click(object sender, EventArgs e)
{
if (myEvent != null)
{
MyEvent(this, e);
}
}
Run Code Online (Sandbox Code Playgroud)
主要表格:
public partial class MainForm : Form
{
ChildForm ChildFrm= new ChildForm ();
ChildFrm.MyEvent += new EventHandler(HandleTheEvent);
private void button1_Click(object sender, EventArgs e)
{
ChildForm childfrm = new ChildForm ();
childfrm.ShowDialog()
}
public void HandleTheEvent(object sender, EventArgs e)
{
textBox1.Text = "event is fired";
}
Run Code Online (Sandbox Code Playgroud)
您正在将事件处理程序添加到另一个ChildForm实例.将MainForm的button1_click更改为如下所示:
private void button1_Click(object sender, EventArgs e)
{
ChildFrm.ShowDialog()
}
Run Code Online (Sandbox Code Playgroud)
你的应用程序应该工作正常.
这是有效的MainForm.cs:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
ChildFrm.MyEvent += new EventHandler(HandleTheEvent);
}
ChildForm ChildFrm = new ChildForm();
private void button1_Click(object sender, EventArgs e)
{
ChildFrm.ShowDialog();
}
public void HandleTheEvent(object sender, EventArgs e)
{
textBox1.Text = "event is fired";
}
}
Run Code Online (Sandbox Code Playgroud)