繁体   English   中英

DLL上WinForm上的事件处理按钮

[英]Event-Handling buttons on WinForm from a DLL

我编写了一个C#实用程序类(DLL),该类由Windows应用程序调用。 在Windows应用程序中,我设置了backgrounderWorker以允许耗时的代码不占用Windows应用程序。 耗时的代码位于实用程序类DLL中。 现在,我在Windows应用程序上设置了两个按钮:“提交”按钮-在实用程序类中调用了耗时的代码,并在其中单击了“取消”按钮。

我希望单击“取消”按钮可以停止backgroundWorker代码。 问题是Windows应用程序中的“取消”按钮和DLL中的代码。 那么,有没有一种方法可以将“取消”按钮的“ onClick”事件处理程序附加到DLL,然后让DLL定期检查以查看按钮是否被按下?

顺便说一句,取消按钮的工作直到启动DLL代码。

我的想法正确还是有更好的方法? 任何帮助,将不胜感激。

是的,可以注册项目之间的事件。 您所要做的就是在您的dll中引用Winforms应用程序,并让“取消”按钮公开。 那么您可以在dll代码中注册任何事件。 但是 ,我不确定这是否是执行所需操作的最佳方法。 我认为一种更好的方法是在dll中有一个名为Cancel的方法,并具有cancel按钮click事件调用此函数。 这样,您的dll较少依赖于Winforms应用程序。

实际上,我回头查看了一些有关事件和事件处理的文档。 我在DLL中做了以下操作:

  1. 为公共类添加一个eventHandler,我自己的自定义eventArgs和一个子类(eventWatcher)以托管事件(在onCancel上调用)
  2. 我注册了eventWatcher来监听DLL中的OnCancel事件。
  3. 我将eventWatcher公开,因此可以在客户端应用程序中使用它。

在客户端应用程序中,我执行了以下操作:

  1. 我修改了“取消”按钮以引发onCancel事件。 这使我可以在DLL中分配一个方法来处理DLL中耗时代码的正常退出。

现在可以正常工作了!

暂无
暂无

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

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