2014-01-15 7 views
0

상위 폼만 잠그는 하위 폼을 열고 싶습니다. 대화 상자가 닫힐 때까지 열려있는 모든 양식을 잠그기 때문에 ShowDialog()를 사용할 수 없습니다.상위 양식 만 잠그는 하위 양식 열기 방법?

기본 폼 - 서비스 양식 사용자가 양식에 내가 같은 새로운 자식 폼이 새 사용자 추가 열 때, 나는 에만 잠금 사용자 형성 할

하지만 열 수도 서비스 형태 - 사용자 양식 또는 주 양식에있는 다른 양식.

제안 사항?

+0

응용 프로그램에서 두 번째 UI 스레드가 허용됩니까? –

답변

2

How-To-Prevent-Control-From-Stealing-Focus에서 아이디어를 차용했습니다. 기본적으로 "새 사용자 추가"를 열 때 호출 양식을 비활성화하십시오. "Add New User"가 닫히면, 호출 폼을 활성화하십시오. 나는 아래 예를 썼다.

public partial class Form1 : Form 
{ 
    Form2 frm2; 
    Form3 frm3; 
    public override bool Focused 
    { 
     get 
     { 
      return HasFocus; 
     } 
    } 
    private bool HasFocus = false; 
    public Form1() 
    { 
     InitializeComponent(); 

     frm3 = new Form3(); 

    } 

    void frm2_FormClosed(object sender, FormClosedEventArgs e) 
    { 
     frm2.FormClosed -= frm2_FormClosed; 
     this.Enabled = true; 
    } 



    private void button1_Click(object sender, EventArgs e) 
    { 
     frm2 = new Form2(); 
     frm2.FormClosed += frm2_FormClosed; 
     frm2.Show(); 
     this.Enabled = false; 
    } 

    private void button2_Click(object sender, EventArgs e) 
    { 
     frm3.Show(); 
    } 
} 
+1

자식 폼이 표시되고 자식 폼이 닫힌 이벤트에서 부모 폼을 활성화하면 부모 폼이 비활성화되어 내 문제가 해결되었습니다. 고맙습니다 – cihata87