【问题标题】:How to properly listen form events with another form如何用另一个表单正确监听表单事件
【发布时间】:2013-04-13 23:58:17
【问题描述】:

卡在另一个表单的监听事件中。

当我尝试关闭 Form2 时,Form1 上没有任何反应。当 Form2 关闭时,我想在 Form1 中做一些事情。

这是我的 Form1 代码

public partial class Form1: Form
        {
             public Form1()
            {
                InitializeComponent();

                Form2 frm2= new Form2();
                frm2.FormClosing += new FormClosingEventHandler(frm2_FormClosing);
            }

            void frm2_FormClosing(object sender, FormClosingEventArgs e)
            {
                throw new NotImplementedException();
            }

【问题讨论】:

    标签: c# winforms forms events


    【解决方案1】:

    您需要显示您正在实现它的对象是FormClosing 事件。由于您正在创建的新对象在您的构造函数中,我假设 frm2 不是您正在显示的表单,这意味着您没有处理该事件。

    public Form1()
    {
        InitializeComponent();
    
        Form2 frm2 = new Form2();
        frm2.FormClosing += frm2_FormClosing;
        frm2.Show();    
    }
    
    void frm2_FormClosing(object sender, FormClosingEventArgs e)
    {
        MessageBox.Show("Form2 is closing");
    }
    

    【讨论】:

      【解决方案2】:

      您创建了一个新的 form2 实例,并听取了它的关闭事件 - 但从您发布的代码中您从未显示它?不知道我错过了什么,但你认为应该工作的工作确实有效 - 即:

       public partial class Form1 : Form
          {
              public Form1()
              {
                  InitializeComponent();
              }
      
              private void button1_Click(object sender, EventArgs e)
              {
                  Form2 frm2 = new Form2();
                  frm2.FormClosing += frm2_FormClosing;
                  frm2.Show();
              }
      
              void frm2_FormClosing(object sender, FormClosingEventArgs e)
              {
                  MessageBox.Show("form 2 closed");
              }
          }
      

      【讨论】:

        猜你喜欢
        • 2019-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-24
        • 1970-01-01
        • 2017-08-10
        • 2013-12-03
        • 1970-01-01
        相关资源
        最近更新 更多