我想打开一个只锁定其父表单的子表单。我不能使用 ShowDialog() 因为它会锁定所有打开的表单,直到对话框关闭。
主表格 - 用户表格 - 服务表格
当我在用户表单上打开一个新的子表单作为添加新用户时,我只想锁定用户表单,但我也可以在主表单上打开服务表单或任何其他表单。
有什么建议么?
从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();
}
}