3

これをすべての子フォームを最小化するクラスに変換するにはどうすればよいですか? それをクラスに転送しようとすると、エラーが発生しました:

型または名前空間名 'MdiChildren' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?)

public void minimizeAll()
{
   foreach (Form childForm in MdiChildren)
   {
      childForm.WindowState = FormWindowState.Minimized;
   }
}
4

4 に答える 4

2

次のようなものを試してみてください ( MDI 親フォームがたくさんあることはほとんどありません):

public static class Minimizer {
  public static void MinimizeMdiChildren() {
    // Enumerate all forms, minimize MDI Children
    foreach (Form form in Application.OpenForms) 
      if (form.IsMdiChild)
        form.WindowState = FormWindowState.Minimized;
  }
}
...
Minimizer.MinimizeMdiChildren();
于 2013-08-31T16:53:37.643 に答える
2

コードを新しいクラスに移動したため、以前にオブジェクトにリンクされていたプロパティthis.からの暗黙的な参照は使用できなくなり、次のように新しいクラスでオブジェクトを渡し、受け入れる必要があります。MDIChildrenWindows FormForm

public class NewClass
{
    public void minimizeAll(System.Windows.Forms.Form yourForm)
    {
        if(yourForm == null) throw new InvalidArgumentException();

        foreach (Form childForm in yourForm.MdiChildren)
        {
           childForm.WindowState = FormWindowState.Minimized;
        }
    }
}
于 2013-08-31T16:50:23.250 に答える
2

MdiChildrenは静的プロパティではないため、フォームのインスタンスを使用する必要があります。Form をパラメーターとして渡すことができます。

public void minimizeAll(Form parentForm)
{
   foreach (Form childForm in parentForm.MdiChildren)
   {
      childForm.WindowState = FormWindowState.Minimized;
   }
}
于 2013-08-31T16:50:36.727 に答える
0

あなたがしなければならないことはusing MdiChildren;、他の using ディレクティブによって先頭に追加し、MdiChildren名前空間を参照として追加することです。

Visual Studio で参照を追加するには、アプリケーションの右側にあるプロジェクト エクスプローラーでプロジェクト名を右クリックし、[参照の追加] に到達するまでポップアップ メニューを下にスクロールします。ここから、プロジェクトで参照する名前空間を選択し、[OK] をクリックします。

ここから、以前ForEachに持っていたクラスパスを入力するだけですMdiChildren。何かのようなものMdiChildren.TheClass

于 2013-08-31T16:44:02.567 に答える