1

私のwinformsアプリケーションでは、別のフォームからform.ActiveFormを何度も使用しています。これは、フォームの新しいインスタンスが必要ではなく、フォームを前面に移動するか、フォームのコンポーネントを別の方法で設定するためです。ただし、フォームを最小化すると、form.ActiveForm が NullReferenceException を返すことに気付きました。この最小化されたフォームにアクセスするにはどうすればよいですか? その方法はないようです。これを行う別の方法はありますか?

4

3 に答える 3

1

Application.OpenFormsを使用して、正しいタイプのフォームを見つけます。

foreach (var f in Application.OpenForms)
{
    if (f is MyForm)
    {
        // do something...
        break;
    }
}
于 2013-01-16T00:20:03.307 に答える
1

最小化されたフォームをプライマリ フォームのフィールドとして保存し、その方法でアクセスします。フォームが最小化されている場合、フォームは「アクティブ」ではありません。ただし、フィールドを使用すると、引き続きアクセスできます。

于 2013-01-16T00:05:18.743 に答える
0

最小化されたフォームへの参照を保存します。必要に応じて、パブリックプロパティを作成することにより、2番目のフォームで保存できます。

public MyForm myForm;

そしてそれを設定します:

MyForm frm = new MyForm();
frm.myForm = (first form reference here);

そして、2番目のフォームは。を使用して最初のフォームを直接参照できますmyForm

于 2013-01-16T00:11:24.387 に答える