0

我有一个带有 3 个子窗口的 MDI 表单。

  • MDI 开始为空。

  • 每个孩子可以从菜单中打开一次。

当我打开多个窗口并关闭顶部的窗口时,应该获得焦点,但是新的活动子窗体的 GotFocus() 事件没有触发。

Private Sub frmMain_gotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.GotFocus
...
End Sub
4

2 回答 2

2

倒霉的猜测。Enter 或 Activated 事件都可以解决您的问题。

在 Windows 窗体编程中,您通常希望避免 GotFocus 和 LostFocus 事件。它们通常隐藏在设计器中,但并非始终如一。Enter 和 Leave 事件分别是它们的替代品,它们是从 UI 的逻辑状态而不是原始 Windows 消息生成的。使用验证和 MDI 时会有所不同。

激活是“自然”的,因为实际焦点移动到该表单的子控件。

于 2010-07-13T22:15:43.123 回答
0

从 MDI 父窗体创建 MDI 子窗体时,应将 MDI 父窗体订阅到 MDI 子窗体的 GotFocus 事件。当您的 MDI Child 上发生任何焦点事件时,您的 MDI Parent 会收到通知。

当表单关闭/打开时,应该自动选择 MDI Z-Order 中的下一个子表单,如果您订阅了该事件,您的 MDI 父级可以适当地采取行动并显示您的数据。

于 2010-07-13T21:14:02.800 回答