2016-11-20 7 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이 표시되지 않는 이유를 알고 싶습니다.

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

당신이 Close(); 양식에로드 이벤트 알려주기 : 나는 당신의 FBase 생성자 이유라고 생각합니다. 소유자가 false이면 직접 닫힙니다. 또한 OpenSingleMdiChild-Method에서 일부 반환을 사용해야합니다. 왜냐하면 @PeterBons가 지적 하듯이 이것은 읽기가 정말로 어렵 기 때문입니다.

은 또한이 코드는 나에게 매우 분명하지 않다 :

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

당신은 양식을 보여주고 직접 파괴? 왜 누군가는 이것을해야합니까?

귀하의 질문에 답변하시기 바랍니다. 다른 질문을 해주세요.).

+0

소유자 = 거짓일 경우에만 Form1을 닫으려고합니다 – Jalil

+0

@ 자일린 귀하의 질문을 정정하십시오. 다음과 같이 작성하십시오 : OpenSingleMdiChild (() => new Form1 (false)); 올바른 아니지만 내 말은 짐작 : OpenSingleMdiChild (() => new Form1 (true)); – Sebi

+0

내 문제는 OpenSingleMdiChild (() => 새로운 Form1 (false)) Form1을 닫지 않는다는 것입니다 !!! – Jalil