Winforms:将两个模糊的表单放在前面

本文关键字:模糊 表单 在前面 两个 Winforms | 更新日期: 2023-09-27 18:29:01

我一直在努力解决这个问题。我有两个表格,我的目标是:

  1. 当用户最小化form2时,form1也必须最小化
  2. 当用户最大化form2时,form1也必须最大化
  3. 当两个窗体都被另一个窗口遮挡,并且用户单击任务栏中的窗体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();
}

有人知道我该怎么做吗?

Winforms:将两个模糊的表单放在前面

创建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);
}