public event itemcheck()是一个事件,无法直接调用。使用'raiseevent'语句来引发事件

时间:2015-01-21 12:50:33

标签: vb.net

您好我将以下c#代码转换为vb.net。

public Dropdown(CheckedComboBox ccbParent)
{
this.ccbParent = ccbParent;

InitializeComponent();

this.ShowInTaskbar = false;                     

this.cclb.ItemCheck += new System.Windows.Forms.ItemCheckEventHandler(this.cclb_ItemCheck);
}

private void cclb_ItemCheck(object sender, ItemCheckEventArgs e)
{
 if (ccbParent.ItemCheck != null)
  {
    ccbParent.ItemCheck(sender, e);
  }
}

Visual Basic

Private cclb As CustomCheckedListBox

Public Event ItemCheck As Windows.Forms.ItemCheckEventHandler

Public Sub New(ByVal ccbParent As PlexisCheckedComboBox)

 MyBase.New()

 Me.ccbParent = ccbParent

 InitializeComponent()

 Me.ShowInTaskbar = False

 AddHandler cclb.ItemCheck, AddressOf cclb_ItemCheck

End Sub

Private Sub cclb_ItemCheck(ByVal sender As Object, ByVal e As 
Windows.Forms.ItemCheckEventArgs)

If (Not (ccbParent.ItemCheck) Is Nothing) Then

    ccbParent.ItemCheck(sender, e)

End If

End Sub 

在转换后的vb.net代码中,我在以下行中获取错误  “”

If (Not (ccbParent.ItemCheck) Is Nothing) Then

 ccbParent.ItemCheck(sender, e) 

请帮我解决一下。

1 个答案:

答案 0 :(得分:0)

好吧,正如错误消息告诉您的那样,您必须使用RaiseEvent关键字来举起活动。

但是即使这样它也行不通,因为你不能在事件被声明的类之外引发事件(与C#相反,嵌套类可以引发外部类的事件)。

因此,要解决此问题,请向名为OnItemCheck的外部类添加一个新方法,该方法会引发ItemCheck事件,并在cclb_ItemCheck中调用该方法,而不是尝试直接引发事件。

相关问题