1

在我的应用程序中,用户可以打开多个表单。

有些形式是 MDI,有些不是。

如何以任意(MDI 或非 MDI)形式检测它是否是活动形式?

来自 MSDN(Form.ActiveForm属性解释):

您可以使用此方法获取对当前活动表单的引用,以对表单或其控件执行操作。如果您的应用程序是多文档界面 (MDI) 应用程序,请使用该ActiveMdiChild属性来获取当前活动的 MDI 子窗体。

我有 2 种可能性,一种用于 MDI,另一种用于非 MDI,但是如果我同时打开了两种形式,我如何检测它们中的哪一种是真正活跃的?

4

1 回答 1

0

您可以将此逻辑放置在您需要的地方:

        if (Form.ActiveForm == null) return;

        if (Form.ActiveForm == this.MdiParent)
        {
            if (MdiParent.ActiveMdiChild != null) 
                Debug.WriteLine(MdiParent.ActiveMdiChild.Text);

            return;
        }

        Debug.WriteLine(Form.ActiveForm.Text);

Form.ActiveForm返回当前活动的非 MDI 表单。如果 Active 窗体是 MDI 父窗体(主窗口),这将意味着 MDI 窗体处于活动状态,因此我们查看MdiParent.ActiveMdiChild

此示例写入表单文本以进行调试,但您可以以任何您希望的方式使用该信息。

于 2012-05-24T16:19:26.143 回答