簡體   English   中英

您如何跨課程觸發事件?

[英]How do you trigger an event across classes?

我正在編寫將由其他應用程序使用的類庫。 我在C#.NET中編寫它。 我在跨類觸發事件時遇到問題。 這是我需要做的...

public class ClassLibrary
{
    public event EventHandler DeviceAttached;

    public ClassLibrary()
    {
        // do some stuff
        OtherClass.Start();
    }
}

public class OtherClass : Form
{
    public Start()
    {
        // do things here to initialize receiving messages
    }

    protected override void WndProc (ref message m)
    {
       if (....)
       {
          // THIS IS WHERE I WANT TO TRIGGER THE DEVICE ATTACHED EVENT IN ClassLibrary
          // I can't seem to access the eventhandler here to trigger it.
          // How do I do it?

       }
       base.WndProc(ref m);
    }

}

然后在使用類庫的應用程序中,我將執行此操作...

public class ClientApplication
{
    void main()
    {
       ClassLibrary myCL = new ClassLibrary();
       myCL.DeviceAttached += new EventHandler(myCl_deviceAttached);
    }

    void myCl_deviceAttached(object sender, EventArgs e)
    {
         //do stuff...
    }
}

可能最簡單的選擇是在ClassLibrary添加一個引發事件的方法...即

internal void RaiseDeviceAttached(object sender, EventArgs e)
{
  if (DeviceAttached != null) DeviceAttached(sender, e);
}

然后,在OtherClass ,只需調用ClassLibrary方法。

另一種選擇是沿着反射路徑觸發事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM