如何检查事件是否已在另一个表单/类中触发

pvd*_*dev 1 vb.net events winforms visual-studio-2013

所以尽可能简单地说,我有一个类从子内部打开一个表格,如下所示:

Public Sub LoadExtension()

    'various code...

    Dim form as new frmMain
    frmMain.ShowDialog()

    'various code...

End Sub
Run Code Online (Sandbox Code Playgroud)

在这个表单中我有两个按钮,一个只关闭表单,所以LoadExtension()子将继续.我想用来"退出"主类中的LoadExtension()子的另一个按钮,以便加载完全停止.表单模块中的按钮事件是这样的:

Private Sub btnStopLoad_click(sender as object, e as eventargs) handles btnStopLoad.click
    'exit the LoadExtension sub somehow
End sub
Run Code Online (Sandbox Code Playgroud)

实现这一目标的最简单方法是什么?我以为我可以在LoadExtension()子(在.ShowDialog之后)做类似的事情:

If frmMain.btnStopLoad.clicked then
    Exit Sub
End If
Run Code Online (Sandbox Code Playgroud)

但它不会让我从类模块那样做,显然我需要使用'加注事件'或什么?我对事件的运作方式不太熟悉.有人能给我一个简单的解决方案吗?我会非常感激的.我一直在网上寻找解决方案,但没有取得任何成功.谢谢你的时间.

Bjø*_*sjå 6

您可以通过设置实现这一目标DialogResultfrmMain.

Public Class frmMain
    Inherits Form

    Private Sub _ButtonContinueClick(sender As Object, e As EventArgs) Handles ButtonContinue.Click
        Me.DialogResult = Windows.Forms.DialogResult.OK
        Me.Close()
    End Sub

    Private Sub ButtonExitClick(sender As Object, e As EventArgs) Handles ButtonExit.Click
        Me.DialogResult = Windows.Forms.DialogResult.Cancel
        Me.Close()
    End Sub

End Class
Run Code Online (Sandbox Code Playgroud)

然后将LoadExtension方法更改为以下内容:

Public Sub LoadExtension()

    'various code...

    Using form As New frmMain()
        If (form.ShowDialog() <> Windows.Forms.DialogResult.OK) Then
            Exit Sub
        End If
    End Using

    'various code...

End Sub
Run Code Online (Sandbox Code Playgroud)