【问题标题】:GotFocus() and MDI ChildrenGotFocus() 和 MDI 儿童
【发布时间】:2010-07-13 20:54:38
【问题描述】:

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

  • MDI 开始为空。

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

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

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

【问题讨论】:

    标签: vb.net winforms focus mdi mdichild


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-05
        • 1970-01-01
        相关资源
        最近更新 更多