在.net示例

时间:2015-08-06 00:32:04

标签: .net vb.net events event-handling

我正在尝试创建一个在vb.net中引发事件的基本示例,我希望通过彻底研究它,我可以升级我的系统从串口接收数据的方式。

现在我有一个系统通过定时器从串口接收传入数据,问题是系统中的某些事件在我的定时器中有冲突。因此,我计划改变从串口接收数据的方式,而不是计时器,我想使用vb.net raiseevent。

很遗憾,我无法找到一个关于如何使用此活动的简单示例,通过彻底搜索,我看到了关于此主题的 MSDN&#39> 帖子和it is here。那么,我该如何使用这个例子呢?我尝试在下面使用它

Public Event TimeExpired(ByVal Status As String)
Public Sub RaiseTimeExpiredEvent()
    RaiseEvent TimeExpired("Your time has run out")
    MessageBox.Show(TimeExpired())
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    RaiseTimeExpiredEvent()
End Sub

它无法正常工作,错误是

  

错误1'公共事件TimeExpired(状态为字符串)'是一个事件,不能直接调用。使用' RaiseEvent'发表活动的声明。 C:\ Users \ Cary \ Desktop \ Projects \ Testing \ Testing \ Testing \ Form1.vb 5 25测试

由于这个错误,我试图像这样做

Class Form1
Public Event TimeExpired(ByVal Status As String)
Public Sub RaiseTimeExpiredEvent()
    RaiseEvent TimeExpired("Your time has run out")
    MessageBox.Show(TimeExpired())

End Sub


Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    RaiseEvent TimeExpired()
End Sub

结束班

但错误说明

  

错误2未为参数'状态'指定参数'公共事件TimeExpired(状态为字符串)'。 C:\ Users \ Cary \ Desktop \ Projects \ Testing \ Testing \ Testing \ Form1.vb 11 9测试

1 个答案:

答案 0 :(得分:1)

您使用的是Visual Studio吗?如果是,您可以尝试显示错误列表。为此,请单击“查看”和“错误列表”。

Class Form1

    Public Event TimeExpired(Status As String)

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        RaiseEvent TimeExpired("Your time has run out")
    End Sub

End Class

要处理此事件,您可以添加以下内容:

Private Sub HandleTimeExpired(Status As String) Handles Me.TimeExpired
    MsgBox(Status)
End Sub

以下是完整代码:

Class Form1

    Public Event TimeExpired(Status As String)

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        RaiseEvent TimeExpired("Your time has run out")
    End Sub

    Public Sub OnTimeExpired(Status As String) Handles Me.TimeExpired
        MsgBox(Status)
    End Sub

End Class

修改:

如果你想在模块中提升事件,你就不能。你必须在课堂上添加它。 See this link

Class1的示例(您应该重命名它......):

Public Class Class1

    Private Event TimeExpired(Status As String)

    Public Sub OnTimeExpired(Status As String)
        RaiseEvent TimeExpired(Status)
    End Sub

    Private Sub HandleTimeExpired(Status As String) Handles Me.TimeExpired
       MsgBox(Status)
    End Sub

End Class

要使用它,您必须在Form1中声明它为WithEvents:

Public Class Form1

    Dim WithEvents Class1 As New Class1

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Class1.OnTimeExpired("Your time has run out")
    End Sub

End Class