繁体   English   中英

在任务栏中最小化表单时将其放在最前面

[英]Bringing a form to front when it is minimized in taskbar

有没有办法将已经最小化的表格带到Taksbar前面? 我尝试了以下代码,但未成功:

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

PS:此表单是从另一个表单中调用的,用户在其中进行了一些处理,然后可以将其最小化。 我希望一次仅打开此表单的一个实例,因此用户第二次单击该按钮以显示该表单。我正在检查该表单是否已显示,如果显示,则希望其位于前面:

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; 之前为了还原窗口。 如果将其最小化,则必须首先重新启动它。 然后filterForm.Activate()应该足够了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM