2014-01-15 81 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

相关问题