2016-11-20 3 views
-1

を使用してブール値に基づいて、フォームのインスタンスを作成し、表示し(Form1を示す):私は、これらのクラスを持っている一般的な方法

01:

OpenSingleMdiChild(() => new Form1(false)); 

これはOpenSingleMdiChildの実装であります

public static void OpenSingleMdiChild<T>(this Form parent, Func<T> factory) where T : Form 
{ 
    T f = null; 

    foreach (Form c in parent.MdiChildren) if (c.GetType() == typeof(T)) { f = c; break; } 

    if (f == null) { f = factory(); f.MdiParent = parent; } 

    f.Show(); f.Select(); 
} 
+2

あなたは新しいラインが好きではありませんか?読みにくい –

+0

非常に申し訳ありません@PeterBons :) – Jalil

答えて

1

あなたの質問が分かっている場合、Form1が表示されない理由を知りたいと思っています。私はあなたのFBASEコンストラクタが理由だと思う。そこ

public FBase(bool owner) : this() 
{ 
    if (!owner) { this.Opacity = 0; Load += (s, e) => Close(); } 
} 

フォームをClose();するロード・イベントを教えてください。所有者がfalseの場合、それは直接クローズされます。さらに、OpenSingleMdiChild-Methodでいくつかのリターンを使用する必要があります。 @PeterBonsが指摘するように、これは本当に読みにくいからです。

さらに、このコードは、私にとって非常に明確ではありません。

using (Form1 f = new Form1(false)) 
{ 
    if(f != null) { f.MdiParent = parent; f.Show(); } 
} 

フォームを表示し、それを直接破壊しますか?なぜ誰かがこれを行うべきですか?

あなたの質問にお答えしたいと思います。他にも本当の質問をお願いします;)。

+0

owner = falseの場合はForm1を閉じるだけです – Jalil

+0

@Jalilあなたの質問を修正してください。あなたはこれを書いています:OpenSingleMdiChild(()=>新しいForm1(false));正しいとは言えませんが、あなたはこれを推測しています:OpenSingleMdiChild(()=> new Form1(true)); – Sebi

+0

私の問題は、OpenSingleMdiChild(()=>新しいForm1(false))はForm1を閉じないということです! – Jalil

関連する問題