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

时间:2017-02-10 16:30:46

标签: vb.net events

显然我无法直接在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");
        }
    }

2 个答案:

答案 0 :(得分:3)

VB.NET有eq3 a+b+c=d+e+f 方法,其工作方式类似于&#39; +&#39;重载运算符用于在C#中添加事件处理程序。没有&#39; +&#39;在VB中使用这种方式。您可以指定要捕获的事件以及发生时触发的处理程序:

你大致这样称呼它:

eq4: x-b-c+s+y-d-f = 0

答案 1 :(得分:1)

自定义事件分为两部分

AddHandler和RaiseEvent

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

AddHandler apiInstance.INitComplete, AddressOf Me.ttApiInitComplete

在您的类中创建任何声明

的自定义事件
Public Event YourEventName(.. enter your arguments here...)

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

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

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

Private WithEvents YourClassrObjectName as WhateverItIS

然后该对象将出现在列出事件的对象的intellisense列表中。

像这样......

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