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