0

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

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

当我在用户表单上打开一个新的子表单作为添加新用户时,我只想锁定用户表单,但我也可以在主表单上打开服务表单或任何其他表单。

有什么建议么?

4

1 回答 1

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();
    }
}
于 2014-01-15T15:20:38.833 回答