1
A
回答
8
例如,
AddHandler Obj.Ev_Event, AddressOf EventHandler
,當你想擺脫它(你應該擺脫它,當你使用它大功告成)
RemoveHandler Obj.Ev_Event, AddressOf EventHandler
你的情況
,你可能會碰到這樣的
Dim web as New WebBrowser()
AddHandler web.DocumentCompleted, AddressOf HandleDocumentCompleted
假設你創建了一個名爲HandleDocumentCompleted
的事件處理程序根據你的需要,你可以一當你聲明你的網頁瀏覽器時,也使用WithEvents關鍵字;請參閱documentation。
0
我通過檢查表單設計器生成的代碼瞭解了這一點。複製其中的一個示例,如果您環顧四周,可能會了解有關在運行時設置控件的其他有價值的信息。
在C#中,它以+ =完成,在一個以函數爲參數的類的事件成員上,但我沒有VB.net方便地檢查自己...對不起。
編輯:它的AddHandler正如Daniel L在他的回答中所描述的那樣,並且在msdn處詳細描述。
1
- 您將需要使用AddHandler和RemoveHandler。
- 如果您通過AddHandler手動添加事件,請務必使用RemoveHandler將其刪除(在適當的位置)。
- 輸入「AddHandler NameOfControl」。將通過intellisense列出可用事件。
- 智能感知,文檔(或「錯誤列表」)也會爲您提供事件處理程序的「簽名」。
Private Sub WebBrowser1_Navigate(ByVal sender As Object, ByVal e As WebBrowserNavigatedEventArgs)
End Sub
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
RemoveHandler WebBrowser1.Navigated, AddressOf WebBrowser1_Navigate
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
AddHandler WebBrowser1.Navigated, AddressOf WebBrowser1_Navigate
End Sub
2
使用AddHandler
一種替代方法是在VB聲明性事件語法。若要使用它,您可以使用WithEvents
關鍵字,聲明控件(作爲私有成員)。然後,Handles
關鍵字可以上的方法來處理相應的事件:
Private WithEvents m_WebBrowser As WebBrowser
Private Sub WebBrowser_Navigate(ByVal sender As Object, ByVal e As WebBrowserNavigatedEventArgs) Handles m_WebBrowser.Navigate
MsgBox("Hi there")
End Sub
Private Sub SomeActionThatCreatesTheControl()
m_WebBrowser = New WebBrowser()
End Sub
主要有兩個優點這種方法:
- 無需
RemoveHandler
, - 無需電線手動處理所有事件處理程序:這是自動完成的。
0
例
的AddHandler SharedTimer.Tick,AddressOf SharedTimer_Tick
0
「我有發現控制和在某些情況下增加了處理程序的方法。
'這是一個簡單的例子。
'運行時是否可以傳遞處理程序?
Private Sub Example(byval ph as Placeholder)
for each ctrl as control in ph.controls
if typeof (ctrl) is textbox then
dim cb as checkbox = ctrl
AddHandler cb.DataBinding, AddressOf MyHandler
end if
next
end sub
「我希望做更多的東西像這樣...
Private Sub Example(byval ph as Placeholder, **byref method as delagate**)
for each ctrl as control in ph.controls
if typeof (ctrl) is textbox then
dim cb as checkbox = ctrl
AddHandler cb.DataBinding, **method**
end if
next
end sub
我有是調用該方法的問題。這是行不通的:
Example(myPlaceholder, addressof MyRuntimeHandler)
0
您可以使用Addhandler語句來執行這些操作。 您可以在運行時添加任何事件處理程序的網頁瀏覽器這樣
AddHandler WebBrowser1.xEvent, AddressOf WebBrowser1EventHandler
,同樣可以使用RemoveHandler,從事件處理程序像這樣斷開事件:
RemoveHandler WebBrowser1.XEvent, AddressOf WebBrowser1EventHandler
相關問題
- 1. 處理運行時添加的控件的事件
- 2. 在運行時添加控件時無法處理事件
- 3. 運行時控件事件處理程序窗體
- 4. 如何在運行時克隆控件事件處理程序?
- 5. 動態事件處理
- 6. 動態創建的ActiveX控件的事件處理
- 7. 在asp.net中處理動態創建的控件的事件
- 8. 如何處理動態生成的控件的事件?
- 9. 在vb.net中動態創建對象的事件處理
- 10. 動態添加用戶控件的事件處理
- 11. 如何處理aspx頁面動態的用戶控件事件
- 12. VB6中動態控件的事件處理
- 13. 動態控件陣列的事件處理
- 14. 如何使用動態創建的控件處理事件?
- 15. 在vb.net中運行批處理文件?
- 16. 運行時顯示動態控件
- 17. 處理在運行時添加的控件(ON USER CONTROL或WEB PART)的事件
- 18. 事件處理與動態的ToolStripItem
- 19. 處理動態創建的控件?
- 20. 動態添加事件處理程序到動態面板在vb.net
- 21. 如何編寫動態控制的事件處理程序?
- 22. 動態添加事件處理程序
- 23. 動態XAML和事件處理
- 24. VB.NET:在運行時將類事件添加到接口事件
- 25. 當派生WPF控件時,是否可以保證控件的事件處理程序首先處理事件?
- 26. Web部件,動態創建的控件和事件處理程序
- 27. 如何創建動態控制事件處理程序
- 28. 添加事件處理動態地控制面板內
- 29. VB.NET Class方法處理繪畫事件
- 30. VB.NET 2005 - 「全局」事件處理程序?
添加更多的相關信息支持你的答案,而不是一個班輪.... – bonCodigo 2012-12-22 20:50:09