Winforms:将两个模糊的表单放在前面
本文关键字:模糊 表单 在前面 两个 Winforms | 更新日期: 2023-09-27 18:29:01
我一直在努力解决这个问题。我有两个表格,我的目标是:
- 当用户最小化form2时,form1也必须最小化
- 当用户最大化form2时,form1也必须最大化
- 当两个窗体都被另一个窗口遮挡,并且用户单击任务栏中的窗体2图标时,窗体1也必须出现在前面
我用a_Resize方法解决了前两件事。但我不能做第三个。我尝试激活事件,但当我这样做时,form2一直被阻止。这是我的代码:
public partial class Form1 : Form
{
Form2 form2;
public Form1()
{
InitializeComponent();
form2 = new Form2();
form2.Show();
form2.Resize += new EventHandler(a_Resize);
}
void a_Resize(object sender, EventArgs e)
{
if (((Form)sender).WindowState == FormWindowState.Minimized)
{
this.WindowState = FormWindowState.Minimized;
}
else
{
this.WindowState = FormWindowState.Normal;
}
}
}
如果我将处理程序添加到form2激活事件:
form2.Activated += new EventHandler(form2_Activated);
例如,调用Focus方法(我也尝试过其他方法),form2一直被阻塞在form1后面。
void form2_Activated(object sender, EventArgs e)
{
this.Focus();
}
有人知道我该怎么做吗?
创建form2
时,只需将this
作为参数传递给Show()
,表示form1
是所有者。有了所有者链接,表单将总是一起提出(至少根据我的经验——我没有规范来支持这一点)。
public Form1()
{
InitializeComponent();
form2 = new Form2();
form2.Show(this); //pass 'this' as argument to Show() to link them
form2.Resize += new EventHandler(a_Resize);
}