因此,尽可能简单地说,我有一个类从子内部打开一个表格,如下所示:
Public Sub LoadExtension()
'various code...
Dim form as new frmMain
frmMain.ShowDialog()
'various code...
End Sub
在这个表单中我有两个按钮,一个只关闭表单,所以LoadExtension()子将继续。我想用来“退出”主类中的LoadExtension()子的另一个按钮,以便加载完全停止。表单模块中的按钮事件如下:
Private Sub btnStopLoad_click(sender as object, e as eventargs) handles btnStopLoad.click
'exit the LoadExtension sub somehow
End sub
实现这一目标的最简单方法是什么?我以为我可以在LoadExtension()子(在.ShowDialog之后)做类似的事情:
If frmMain.btnStopLoad.clicked then
Exit Sub
End If
但它不会让我从类模块那样做,显然我需要使用'加注事件'或什么?我对事件的运作方式不太熟悉。有人能给我一个简单的解决方案吗?我会非常感激的。我一直在网上寻找解决方案,但没有取得任何成功。谢谢你的时间。
答案 0 :(得分:6)
您可以通过设置DialogResult
的{{1}}来实现此目的。
frmMain
然后将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
方法更改为以下内容:
LoadExtension
答案 1 :(得分:1)
最简单的方法是使用dialogresult让LoadExtension函数知道按下了哪个按钮。
答案 2 :(得分:1)
DialogResult正是您所寻找的 - 标准方法。
但是,您可以订阅其他表单控件的事件,如下所示:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim frm As New Form2
AddHandler frm.Button1.Click, AddressOf OtherFormButton_Click
frm.ShowDialog()
End Sub
Private Sub OtherFormButton_Click(sender As System.Object, e As System.EventArgs)
MessageBox.Show("hello")
End Sub
这假设Form2
有一个名为Button1
的按钮。