[英]What's the VB.NET equivalent of this C# code for wiring up and declaring an event?
[英]VB.NET equivalent of C# event hook up
這是關於互操作性工具包的,因此給定了另一個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會多次啟動?
也許上升事件會以某種方式再次觸發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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.