Winforms:将2个模糊的表格带到前面

时间:2012-03-26 19:29:01

标签: c# winforms forms

我正试图解决这个问题很长一段时间。 我有两种形式,我的目标是:

  1. 当用户最小化form2时,form1也必须最小化。
  2. 当用户最大化form2时,form1也必须最大化。
  3. 当两个表单被另一个窗口遮挡,并且用户点击任务栏中的form2图标时,form1也必须出现在前面。
  4. 我用a_Resize方法解决的前两件事。但我不能做第三个。我尝试使用activate事件,但是当我这样做时,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 activate事件添加处理程序:

    form2.Activated += new EventHandler(form2_Activated);
    

    并调用例如Focus方法(我也尝试了其他方法),form2在form1后面被阻止。

    void form2_Activated(object sender, EventArgs e)
    {
       this.Focus();
    }
    

    有人有任何想法我怎么能这样做?

1 个答案:

答案 0 :(得分:4)

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