1

私のアプリケーションでは、ユーザーは複数のフォームを開くことができます。

MDI のフォームもあれば、そうでないフォームもあります。

アクティブなフォームかどうかを任意の (MDI かどうかに関係なく) フォームで検出するにはどうすればよいですか?

MSDN から ( Form.ActiveFormプロパティの説明):

このメソッドを使用して、現在アクティブなフォームへの参照を取得し、フォームまたはそのコントロールでアクションを実行できます。アプリケーションがマルチ ドキュメント インターフェイス (MDI) アプリケーションの場合は、ActiveMdiChildプロパティを使用して、現在アクティブな MDI 子フォームを取得します。

1 つは MDI 用、もう 1 つは非 MDI 用の 2 つの可能性がありますが、両方のフォームを開いている場合、どちらが実際にアクティブであるかを検出するにはどうすればよいでしょうか?

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 フォームを返します。アクティブなフォームが MDI の親 (メイン ウィンドウ) である場合、これは MDI フォームがアクティブであることを意味するため、MdiParent.ActiveMdiChild

このサンプルでは、​​デバッグ用にフォーム テキストを書き込みますが、この情報は任意の方法で使用できます。

于 2012-05-24T16:19:26.143 に答える