如果已经打开,则聚焦于窗体

本文关键字:于窗体 窗体 聚焦 如果 | 更新日期: 2023-09-27 18:19:24

我需要关注的形式,如果它已经打开,否则我想打开新的形式。

我已经尝试了这个代码来解决我的问题,但是它打开了一个新的表单,而不是聚焦已经打开的表单。

foreach (var item in Application.OpenForms)
        {
            Form form1 = item as Form ;
            if (form1 != null)
            {
                form1.Activate();
                break;
            }
            else
            {
                form1 = new Form ();
                form1.Show();
                break;
            }
        }

如果已经打开,则聚焦于窗体

我的猜测是,问题是,你实际上只是在看第一种形式-你有一个break语句在if语句的两个部分…你也只是使用一般的Form类型,这几乎肯定是不合适的。您可能需要:

var form = Application.OpenForms.OfType<MyForm>().FirstOrDefault();
if (form != null)
{
    form.Activate();
}
else
{
    new MyForm().Show();
}