VB.NET事件还是比较常用的,于是我研究了一下VB.NET事件,在这里拿出来和大家分享一下,希望对大家有用。在单一的VB.NET工程中,我们可以编写代码类接收事件。具体可以增加一个Windows应用工程来解决,你可以右击它并选择Set As Startup Project选项,这样它就可以在按F5的时候被运行了。
#T#为了访问触发VB.NET事件的类,我们必须给EventSource工程增加一个引用,具体操作如下:选择菜单项Project(工程)->Add Reference(增加引用)。之后,我们可以增加一个按钮到窗体上,并且打开窗体的代码窗口,再引入以下的远程名空间:
- Imports System.ComponentModel
- Imports System.Drawing
- Imports System.WinForms
- Imports EventSource
在窗体A中,我们可以使用WithEvents关键字来定义远程类。
- Public Class FormA
- Inherits System.WinForms.Form
- Private WithEvents objRemote As RemoteClass
当objRemote项在左上角的类名字下拉表中被选择的时候,我们可以在代码窗口右上角的方法名字下拉列表中看到事件的列表。当我们选择了这个选项,以下的代码就将被创建:
- Public Sub objRemote_RemoteEvent() Handles objRemote.RemoteEvent
- End Sub
不幸的是,这些代码是错误的,因为它没有提供我们所传递的参数。为了解决这个问题我们只需要增加参数到声明中去即可:
- Public Sub objRemote_RemoteEvent(ByVal Data As String) _
- Handles objRemote.RemoteEvent
- Messagebox.Show(Data)
- End Sub
我们还需要增加代码来在对话框中显示结果。具体做法为:增加一个按钮到窗体中去,并为按钮增加以下的代码:
- Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
- objRemote = New RemoteClass()
- objRemote.DoSomething()
- End Sub
至此我们就成功完成了从一个工程中触发事件,并且在另外一个工程中接收到这些触发的事件了。