2010-04-28 3 views
0

프로그램이 실행될 때 두 개의 Form1과 Form2가 있습니다.이 두 양식을 표시하고 싶지만 Form2를 ShowDialog();과 함께 사용하려면 Form1을 사용하기 전에 Form2에 응답해야합니다. 이것을 어떻게 할 수 있습니까?두 양식을 함께 표시합니다.

Form2는 사용자 입력을 받아 Form1에 표시되므로 사용자가 Form2에 응답하거나 그냥 죽인 후에 Form2를 숨겨야합니까?

답변

3

ShowDialog을 사용하는 경우 OK 또는 취소 할 때 Form2가 자동으로 숨겨집니다 (관련 버튼에 DialogResult 속성을 설정했다고 가정).하지만 여전히 처분해야합니다. 당신이 뭔가를 할 수 있습니다

using (Form f2 = new Form2()) 
{ 
    // Populate it with existing data 
    DialogResult result = f2.ShowDialog(); 
    // Use the result and any data within f2 
} 
+0

나는 단 하나 개의 버튼 "로그인"을 가지고있다. 그래서 여전히 Dialogresult를 사용해야합니다. ?? 감사합니다. – Ani

+0

@Ani : 사용자가 로그인을 취소하려면 어떻게해야합니까? 일반적으로 양식 상단 오른쪽에 정상 닫기 버튼이 있습니다. –

+0

고마워요 ... 제가 당신의 요점을 가지고 있어요 – Ani

1

나는 이런 형태로 이런 짓을 했을까 : 그는 Form1을 볼 수 로그인을 사용자가 히트 그래서 때를 Form2에

public FormMain() 
{ 
    InitializeComponent(); 
    //Visible should be set within InitializeComponent (or Designer) 
    Visible = false; 

    //Can't be done in constructor, or this.Close() 
    //would lead to an exception. 
    this.Load += (sender, e) => 
    { 
     bool loginSuccessfull = false; 

     using (var loginScreen = new FormLogin()) 
     { 
      if (DialogResult.OK == loginScreen.ShowDialog()) 
      { 
       //Maybe some other public function from loginScreen 
       //is needed to determine if the login was successfull 
       //loginSuccessfull = loginScreen.CheckCredentials(); 
       loginSuccessfull = true; 
      } 
     } 

     if (loginSuccessfull) 
     { 
      Visible = true; 
     } 
     else 
     { 
      this.Close(); 
     } 
    }; 
} 
+0

굉장 .. 고마워요. 많이. – Ani

관련 문제