2014-01-15 111 views
0

我想打開一個只鎖定其父窗體的子窗體。我不能使用ShowDialog(),因爲它鎖定所有打開的表單直到對話框關閉。如何打開只鎖定父窗體的子窗體?

主要形式 - 用戶表格 - 服務形式

當我打開一個新的子窗體爲添加新用戶對用戶形成,我想只鎖定用戶形成,但我也可以打開服務形式或主窗體上的任何其他表單。

有什麼建議嗎?

+0

在應用程序中有第二個UI線程可以接受嗎? –

回答

2

借鑑了How-To-Prevent-Control-From-Stealing-Focus的想法。基本上,當你打開「添加新用戶」時,禁用調用表單。當「添加新用戶」關閉時,啓用呼叫表單。下面我舉了一個例子。

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

相關問題