为什么我的活动空无一人?

nao*_*ouf 0 c# winforms

我正在使用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)

Mik*_*nen 5

您正在将事件处理程序添加到另一个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)