如何打开仅锁定父表单的子表单?

时间:2014-01-15 14:54:34

标签: winforms c#-4.0 ownership owner

我想打开一个只锁定其父窗体的子窗体。我无法使用ShowDialog(),因为它会锁定所有打开的表单,直到对话框关闭。

主要表格   - 用户表格   - 服务表格

当我在“用户”表单上以添加新用户打开新的子表单时,我希望仅锁定用户表单,但我也可以打开服务表单或任何其他表单主要表格。

有什么建议吗?

1 个答案:

答案 0 :(得分: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();
    }
}