1

MDIフォームがあります。このフォームの実行中の子内で、別のフォームが実行されているかどうかを確認したいと思います。何かのようなもの:

    if (this.MdiParent.MdiChildren.Contains(MyForm2))
    {
        //Do Stuff
    }

MyForm2探しているフォームの名前(クラス名)はどこにありますか。コンパイラは「この時点ではクラス名は無効です」のように言います。

これを正しく行う方法は?そのmomemntで「MyForm2」の複数のインスタンスを実行できることに注意してください(インスタンス名が異なります!)

4

2 に答える 2

2

MdiChildrenコレクションを循環するループを作成して、指定されたタイプのフォームが存在するかどうかを確認するだけです。含むには、有効なデータを返すために特定のインスタンスが必要です。

        foreach (var form in this.MdiParent.MdiChildren)
        {
            if (form is MyForm2)
            {
                // Do something. 

                // If you only want to see if one instance of the form is running,
                // add a break after doing something.

                // If you want to do something with each instance of the form, 
                // just keep doing something in this loop.
            }
        }
于 2011-12-27T20:44:16.383 に答える
2

あなたはそれぞれの子供のタイプをチェックする必要があります。

たとえば、isキーワード(詳細)を使用して、子が正しいタイプであるかどうかを判断できます。

if (this.MdiParent.MdiChildren.Any(child => child is MyForm2))
{
}

この.Any()メソッドには、への参照が必要System.Linqです。 Any()についてもっと読む

于 2011-12-27T20:45:37.337 に答える