如何从类库中将事件引发到使用模块?

时间:2010-01-25 22:24:43

标签: vb.net events module class-library

我的应用程序从模块中的子项开始,执行一些操作,然后加载表单。

但它不起作用:/

这里我们执行 dBase.AddTemporalFilepath

module.vb

Public dBase As New Core.clsDatabase

Public Sub Main()

    FurBase.Directory = My.Application.Info.DirectoryPath

    If appMutex.WaitOne(TimeSpan.Zero, True) Then
        ShowUploader()
    End If

    Dim returnValue As String()

    returnValue = Environment.GetCommandLineArgs()

    If returnValue.Length > 1 Then
        If My.Computer.FileSystem.FileExists(returnValue(1).ToString) Then
            dBase.AddTemporalFilepath(returnValue(1).ToString)
        End If
    End If

End Sub

Private Sub ShowUploader()
    Application.EnableVisualStyles()
    Application.Run(frmUploader)
End Sub

我们举起事件 TempFilepathAdded

clsDatabase.vb

Public Class clsDatabase

Public Event TempFilepathAdded()

Public Function AddTemporalFilepath(ByVal filepath As String)
...
        RaiseEvent TempFilepathAdded()
...
End Function

End Class

我们抓住了这个事件

form.vb

Private Sub form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    AddHandler dBase.TempFilepathAdded, AddressOf TempFilepathAddedHandler

End Sub

Private Sub TempFilepathAddedHandler()
    MsgBox("Event raised")
End Sub

任何想法?

更多信息:

表单关闭时会引发事件。

1 个答案:

答案 0 :(得分:1)

“Application.Run(frmUploader)”行暂停程序,直到Window关闭。基本上它劫持主线程来处理用户单击按钮等内容。

通常,您的主要功能应如下所示:

  1. 设置
  2. Application.Run
  3. 清理
  4. 很抱歉,看起来是重组代码的时候了。