C# 在任务栏中最小化窗体时,将其置于前面

C# 在任务栏中最小化窗体时,将其置于前面,c#,winforms,C#,Winforms,有没有办法把一个已经最小化到塔克斯巴的表单带到前面?我尝试了以下代码,但没有成功: filterForm.Show(); filterForm.Activate(); filterForm.BringToFront(); 注意:这个表单是从另一个表单调用的,用户在其中做一些事情,然后可能会最小化它。我希望一次只打开此表单的一个实例,因此第二次用户单击显示表单的按钮时,我将检查表单是否已显示,如果显示,我希望它位于前面: public Filter

有没有办法把一个已经最小化到塔克斯巴的表单带到前面?我尝试了以下代码,但没有成功:

        filterForm.Show();
        filterForm.Activate();
        filterForm.BringToFront();
注意:这个表单是从另一个表单调用的,用户在其中做一些事情,然后可能会最小化它。我希望一次只打开此表单的一个实例,因此第二次用户单击显示表单的按钮时,我将检查表单是否已显示,如果显示,我希望它位于前面:

public FilterForm filterForm;
public bool IsFilterFormActive;

private void tsOpenFilerForm_Click(object sender, EventArgs e)
{
    if (!IsFilterFormActive)
    {
        filterForm = new FilterForm();
        filterForm.FormClosing += delegate {
                                               IsFilterFormActive = false;
                                            };
        IsFilterFormActive = true;
        filterForm.Show();
    }
    else
    {
        filterForm.Show();
        filterForm.Activate();
        filterForm.BringToFront();
    }
}

添加
filterForm.WindowState=FormWindowState.Normal之前,以恢复窗口。如果它被最小化了,你首先必须再次提起它。然后
filtermber.Activate()
就足够了。

添加
filtermber.WindowState=FormWindowState.Normal之前,以恢复窗口。如果它被最小化了,你首先必须再次提起它。然后,
filterForm.Activate()
就足够了。

如果表单实例正在泄漏,最好的办法是在它关闭时将其设置回null。那你也不需要那玩意儿了。像这样:

    FilterForm filterForm;

    private void tsFilterForm_Click(object sender, EventArgs e) {
        if (filterForm == null) {
            filterForm = new FilterForm();
            filterForm.FormClosed += delegate { filterForm = null; };
            filterForm.Show();
        }
        else {
            filterForm.WindowState = FormWindowState.Normal;
            filterForm.Focus();
        }
    }

您正在泄漏表单实例,最好的做法是在它关闭时将其设置回null。那你也不需要那玩意儿了。像这样:

    FilterForm filterForm;

    private void tsFilterForm_Click(object sender, EventArgs e) {
        if (filterForm == null) {
            filterForm = new FilterForm();
            filterForm.FormClosed += delegate { filterForm = null; };
            filterForm.Show();
        }
        else {
            filterForm.WindowState = FormWindowState.Normal;
            filterForm.Focus();
        }
    }

谢谢
FormClosing
FormClosing
事件之间是否存在巨大差异?两种方法似乎都有效!是的,表格关闭可以取消。谢谢。
FormClosing
FormClosing
事件之间是否存在巨大差异?两种方法似乎都有效!是的,可以取消表单关闭。