2

我有 2 个表单,其中一个是通过单击第一个中的按钮来显示的。我希望这样当单击显示第二个表单的按钮时,第一个表单被最小化,第二个表单正常打开。当第二个窗体被关闭时,第一个窗口应该被最小化并放置在它之前的位置。

用户可以覆盖它,只需单击快速 luanch 区域中的第一个表单,如果他/她愿意,可以调出第一个表单,所以我不想要第二个来自我的 Dialog 类型。

我正在尝试下面的代码,但是当我单击按钮时,第一个表单被最小化,第二个表单也被最小化!所以我必须手动取消最小化第二种形式!

    private void button1_Click(object sender, EventArgs e)
    {
        if (DebugForm != null)
            return;

        DebugForm = new DebugForm();
        DebugForm.Closed += delegate
                                 {
                                     WindowState = FormWindowState.Normal;
                                     DebugForm = null;
                                 };

        WindowState = FormWindowState.Minimized;
        DebugForm.Show();
        DebugForm.WindowState = FormWindowState.Normal;
        DebugForm.BringToFront();
    }
4

2 回答 2

8

当屏幕上有另一个窗口时,它似乎会最小化两个窗口。最小化除您的应用程序之外的所有窗口。你会看到它有效。让它与其他窗口一起工作,如下所示:

改变这个:

WindowState = FormWindowState.Minimized;
DebugForm.Show();
DebugForm.WindowState = FormWindowState.Normal;
DebugForm.BringToFront();

对此:

DebugForm.Show();
WindowState = FormWindowState.Minimized;

我删除的行并不是真正必要的。重要的是语句的顺序在最小化之前与父窗体的 Z 顺序相协调。

于 2012-10-12T17:55:09.473 回答
0

遇到类似的问题。问题是我试图回调的表单不是活动表单。这是我解决问题的方法。在当前 from2 的按钮单击上,我添加了:

if (form1.ActiveForm == null)// Check to see if form is active
{
    form1 frm = (form1)Application.OpenForms["form1"];// find open form
    frm.WindowState = FormWindowState.Maximized;// Set state
    frm.ShowInTaskbar = true; //set to show in taskbar
}
于 2016-09-29T16:58:16.817 回答