这是关于互操作工具包,因此另一个UC内的UC是给定的。
我有一个用户控件可以触发按钮上的事件。
我添加了一个处理程序来处理容器用户控件
Dim uc As New LoginUC.Login
AddHandler uc.OkClick, AddressOf InteropUserControl_UserControlOk
现在我需要在父用户控件中引发此事件,将其发送到VB6容器表单。
Public Event UserControlOk()
Private Sub InteropUserControl_UserControlOk(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Me.UserControlOk
RaiseEvent UserControlOk()
End Sub
我看到的问题是,一旦点击按钮,此事件就会一直停止。在c#中,这将由
处理if (this.event != null)
this.event(sender,e);
代码类型。任何建议如何做到这一点是VB.NET?
更新:
Private Sub XamlForm_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles MyBase.Load
' Create the ElementHost control for hosting the
' WPF UserControl.
Dim host As New ElementHost()
host.Dock = DockStyle.Fill
' Create the WPF UserControl.
Dim uc As New LoginUC.Login
AddHandler uc.OkClick, AddressOf InteropUserControl_UserControlOk
' Assign the WPF UserControl to the ElementHost
' control's Child property.
host.Child = uc
' Add the ElementHost control to the form's
' collection of child controls.
Me.Panel1.Controls.Add(host)
End Sub
这是我用来将UC添加到vb.net用户控件的代码。 为什么addhandler会多次启动?
答案 0 :(得分:0)
也许上升的事件会再次触发UC的事件。通过使用保护变量添加来防止它
Dim raisingEvent As Boolean = False
Private Sub InteropUserControl_UserControlOk(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Me.UserControlOk
If Not raisingEvent Then
raisingEvent = True
RaiseEvent UserControlOk()
raisingEvent = False
End If
End Sub