簡體   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