我正在尝试创建一个在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测试
答案 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