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

本文关键字:于最 前面 窗体 任务栏 最小化 | 更新日期: 2023-09-27 18:20:36

有没有办法将已经最小化为taksbar的表单放在前面?我尝试了以下代码,但没有成功:

        filterForm.Show();
        filterForm.Activate();
        filterForm.BringToFront();

p.S:这个表单是从另一个表单调用的,用户在其中做一些事情,然后可能会最小化它。我希望一次只打开这个表单的一个实例,所以第二次用户点击显示表单的按钮时,我会检查表单是否已经显示,如果显示,我希望它在前面:

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();
    }
}

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

您正在泄漏表单实例,最好的做法是在它关闭时将其设置回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();
        }
    }

在之前添加filterForm.WindowState = FormWindowState.Normal;以恢复窗口。如果它最小化了,你首先必须再次提起它。那么CCD_ 2就足够了。