2010-05-28 6 views
1

현재 프로그램에는 버튼을 누를 때 팝업되는 보조 창이 기본 창이 있습니다. 보조 창이 현재 표시되어 있지만 포커스가없는 경우 버튼은 포커스를 가져옵니다. 이 시간 내가 메인 윈도우가로드 보조 윈도우의 새로운 인스턴스를 생성하고 간단하게 나는 새를 작성하지 않는 경우 것으로 나타났습니다 SubWindow.IsDisposed 및 SubWindow.CanFocus클래스가 인스턴스화되어 있는지 확인하십시오.

와의 상태를 확인 오전

인스턴스 시작 부분에 SubWindow.IsDisposed가 예외를 throw합니다. 이전에 SubWindow의 인스턴스를 만들었 으면 수표가 제대로 실행됩니다.

내 질문 - 현재 버전이 제대로 작동하지만 더 좋은 방법이 있습니까? 거대한 관심사는 아니지만 적어도 한 번 이상 존재했음을 보장하지 않으면 서 존재를 확인하는 것이 더 나을 것 같은 느낌입니다.

+3

의견이없는 이유는 무엇입니까? – AlwaysAProgrammer

+0

플랫폼이 무엇입니까? 양식을 얻으시겠습니까? wpf? –

+0

Win Forms를 사용 중입니다. – Holman716

답변

4

SubWindow가 null인지 확인할 수 있습니다. 그런 경우 SubWindow를 인스턴스화합니다. 그렇지 않으면 SubWindow가 인스턴스화됩니다.

1

VoodooChild는 올바른 길로 나를 잡았습니다. (SubWindow == null)은 창을 한 번 연 다음 닫은 경우 false를 반환합니다. 현재까지 모든 경우에 작동

(SubWindow == null || SubWindow.IsDisposed) 

를 사용

.

0

싱글 톤 패턴을 사용하여 두 번째 창을 구현하십시오.


public class SecondForm : Form 
{ 
     public static m_myInstance= new SecondForm(); 
     public static bool m_visible = false; 

     public SecondForm() 
     { 
       InitializeComponent()    
     } 

     public SecondForm Instance() 
     { 
      return m_myInstance; 
     } 

     public static void Show() 
     { 
      ... 
     } 

} 
1

클래스에 정적 카운터 속성을 사용할 수 있습니다. 인스턴스화, 폐기시 증가합니다. 그게 일반적으로 ... 당신의 경우에 VoodooChild의 조언을 따르는 것이 좋습니다.

관련 문제