Winforms: принести 2 затемненных форм вперед - PullRequest
0 голосов
/ 26 марта 2012

Я давно пытаюсь решить эту проблему.У меня есть 2 формы, мои цели:

  1. Когда пользователь сворачивает форму 2, форма 1 тоже должна минимизировать.
  2. Когда пользователь максимизирует форму 2, форма 1 тоже должна максимизироваться.
  3. Когда обе формы закрываются другим окном, и пользователь нажимает на значок form2 на панели задач, form1 также должен выходить вперед.

Первые две вещи, которые я решил с помощью метода 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();
}

У кого-то есть идеи, как мне это сделать?

1 Ответ

4 голосов
/ 26 марта 2012

Когда вы создаете 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...