Windows 窗体对话框上的 Visual Basic 引发事件和主窗体上的处理

Visual Basic raising event on Windows Forms Dialog and handling on Main Form

我有一个对话框 window(称为 Dialog1)和我的主窗体(称为 Form1)。

如何在 Windows 表单中从 Form1 响应 Dialog1 上的事件?我是否应该让 Dialog1 成为另一种形式并使用 WithEvents 关键字实例化它?

提前致谢!

您需要在 Form1 中包含此声明:

Private WithEvents dialog As Dialog1

然后在加载表单时设置它的引用(你不能有一个 声明也 分配引用):

Private Sub UserForm_Initialize()
    Set dialog = New Dialog1
End Sub

现在您可以处理 Dialog1 class/form 公开的任何事件 - 包括您的自定义事件 - 只需从左侧下拉列表中 select dialog IDE 中代码窗格的顶部,select 右侧下拉列表中要处理的事件。

或者直接手动输入处理程序:

Private Sub dialog_Activate()
    '"Activate" event handler for dialog
End Sub

Private sub dialog_QueryClose(Cancel As Integer, CloseMode As Integer)
    '"QueryClose" event handler for dialog
End Sub

此外,帮自己一个忙,命名事物。 "Dialog1" 和 "Form1" 是糟糕的名字。