繁体   English   中英

创建EventHandler并从另一个类监听Event

[英]Create EventHandler and listen to Event from another class

我已经将事件创建为波纹管,并希望在发生事件时监听它并在另一个类中执行方法,但saveEvent总是为null且不会发生,我不知道我错过了什么

这是我的第一堂课有按钮

internal partial class OpenSaveReportWizardForm : Form
{
public event EventHandler saveEvent;
private void saveButton_Click(object sender, EventArgs e)
{
  saveEvent?.Invoke(this, e); 
}
}

这是我想听saveEvent的第二堂课

 internal class Database
 {
  public Database()
  { 
        Program._wizardForm.saveEvent += (sender, e) => HandleSaveMethod( );

  }

public void HandleSaveMethod()
  {
   // do something
  }

这是我打开表格的地方

internal  class Program
{
  public static OpenSaveReportWizardForm _wizardForm;
  private static void Main()
  {
  OpenFileCommandHandler();
  }

void OpenFileCommandHandler()
     { 
        _wizardForm = new OpenSaveReportWizardForm( );

        _wizardForm.ShowDialog(); 
     }
 }

因为您已处置了WizardForm,所以清除了该事件。 您应该编写下一个代码:

 internal class Database
 {
    private bool _isDisposed;
    private OpenSaveReportWizardForm _wizardForm;

  public Database()
  {
      _wizardForm = new  OpenSaveReportWizardForm(m_Opening,m_ConnectionProperties,m_ColumnProperties))
      _wizardForm.saveEvent += (sender, e) => HandleSaveMethod( );

  }

public void HandleSaveMethod()
  {
   // do something
  }

  public void Dispose()
  {
    if(_isDisposed)
        return;

    _isDisposed = true;

    _wizardForm.saveEvent -= HandleSaveMethod;
    _wizardForm.Dispose();
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM