繁体   English   中英

C#到VB.NET事件

[英]C# to VB.NET Events

我在将其转换为VB时遇到问题:

public delegate void ChangeMessageEvent(string message);
public static event ChangeMessageEvent ChangeMessage = null;

而且这似乎不起作用

if (oStatusManager.ChangeMessage != null)
        {
          oStatusManager.ChangeMessage(message);
          Application.DoEvents();

}

错误MSG:

“公共共享阴影事件ChangeMes​​sage(消息作为字符串)”是一个事件,不能直接调用。 使用“ RaiseEvent”语句引发事件。

VB代码:

我用开发人员融合将其转换

这里没有下划线,说:声明结束

Public Delegate Sub ChangeMessageEvent(message As String)
Public Shared Event ChangeMessage As ChangeMessageEvent = Nothing

If oStatusManager.ChangeMessage IsNot Nothing Then
    oStatusManager.ChangeMessage(message)
    Application.DoEvents()
End If

对于以上行

“公共共享事件ChangeMes​​sage(消息作为字符串)”是一个事件,不能直接调用。 使用“ RaiseEvent”语句引发事件。

两件事-删除“ = Nothing”并使用隐藏的VB'Event'字段-或完全删除条件,因为VB在'RaiseEvent'中执行检查:

Public Delegate Sub ChangeMessageEvent(ByVal message As String)
Public Shared Event ChangeMessage As ChangeMessageEvent

Private Sub test()
    If oStatusManager.ChangeMessageEvent IsNot Nothing Then
        RaiseEvent oStatusManager.ChangeMessage(message)
        Application.DoEvents()
    End If
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM