VB 事件不能直接调用,请使用 raiseevent



显然我不能直接在 VB 中调用事件,我需要使用 raise 事件语句来启动该事件。我不知道RaiseEvent声明是什么或如何使用它,Microsoft支持站点含糊不清且无用。有人可以帮我重新编写本节吗?

这是我的 VB 转换:

        Public Sub ttApiInitComplete(api As TTAPI, ex As ApiCreationException)
        If ex Is Nothing Then
            ' Connect to X_TRADER
            apiInstance = DirectCast(api, XTraderModeTTAPI)
            apiInstance.ConnectionStatusUpdate += New EventHandler(Of ConnectionStatusUpdateEventArgs)(AddressOf m_apiInstance_ConnectionStatusUpdate)
            apiInstance.Start()
            Console.WriteLine("API Initialization Complete")
        Else
            Console.WriteLine("API Initialization Failed - see ex.Message for details")
        End If
    End Sub

这是原始工作的 C#

        public void ttApiInitComplete(TTAPI api, ApiCreationException ex)
    {
        if (ex == null)
        {
            // Connect to X_TRADER
            apiInstance = (XTraderModeTTAPI)api;
            apiInstance.ConnectionStatusUpdate += new EventHandler<ConnectionStatusUpdateEventArgs>(m_apiInstance_ConnectionStatusUpdate);
            apiInstance.Start();
            Console.WriteLine("API Initialization Complete");
        }
        else
        {
            Console.WriteLine("API Initialization Failed - see ex.Message for details");
        }
    }

VB.NET 有一个AddHandler方法,其工作方式类似于 '+' 重载运算符在 C# 中添加事件处理程序的方式。在 VB 中没有以这种方式使用"+"。您可以指定要捕获的事件以及发生事件时要触发的处理程序:

你可以这样称呼它:

AddHandler apiInstance.ConnectionStatusUpdate, AddressOf Me.YourEventHandler

自定义事件有两个部分

AddHandler 和 RaiseEvent

Add 处理程序告诉代码在特定事件触发时要运行哪个函数。

AddHandler apiInstance.INitComplete, AddressOf Me.ttApiInitComplete

在类中创建任何声明的自定义事件

Public Event YourEventName(.. enter your arguments here...)

然后当你需要提高它时...

RaiseEvent YourEventName(... Your ARguments...)

作为 AddHandler 的替代方法,您还可以使用

Private WithEvents YourClassrObjectName as WhateverItIS

然后,该对象将出现在列出了事件的对象的智能感知列表中。

像这样的东西...

Private WithEvents myApi as TTAPI
Public Sub ttApiInitComplete(sender As TTAPI, ex As ApiCreationException) handles myApi.InitComplete
    If ex Is Nothing Then
        ' Connect to X_TRADER
        apiInstance = DirectCast(api, XTraderModeTTAPI)
        apiInstance.ConnectionStatusUpdate += New EventHandler(Of ConnectionStatusUpdateEventArgs)(AddressOf m_apiInstance_ConnectionStatusUpdate)
        apiInstance.Start()
        Console.WriteLine("API Initialization Complete")
    Else
        Console.WriteLine("API Initialization Failed - see ex.Message for details")
    End If
End Sub

相关内容

最新更新