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