C# 如何在winforms窗口中打开,但如果此窗口已打开,请将其打开

C# 如何在winforms窗口中打开,但如果此窗口已打开,请将其打开,c#,winforms,C#,Winforms,我有一个窗口“Child 1”,它从“Parent”打开。一旦我点击菜单打开“儿童1”,它可以打开几个窗口,如果我点击几次菜单。如何验证窗口“Child 1”是否打开,我们应该直接打开它 我用来打开窗口的代码: var ticketTypesForm = new fTicketTypes(); ticketTypesForm.Show(); 只要保留类中的引用,而不是每次创建一个引用。只要保留类中的引用,而不是每次创建一个引用。不要使用var,相反,您可以这样做 fTicket

我有一个窗口“Child 1”,它从“Parent”打开。一旦我点击菜单打开“儿童1”,它可以打开几个窗口,如果我点击几次菜单。如何验证窗口“Child 1”是否打开,我们应该直接打开它

我用来打开窗口的代码:

    var ticketTypesForm = new fTicketTypes();
    ticketTypesForm.Show();

只要保留类中的引用,而不是每次创建一个引用。

只要保留类中的引用,而不是每次创建一个引用。

不要使用var,相反,您可以这样做

fTicketTypes ticketTypeForm;
//Some code goes here.
if(ticketTypeForm == null)
    ticketTypeForm = new fTicketTypes();
ticketTypeForm.Show();

不要使用var,相反,您可以这样做

fTicketTypes ticketTypeForm;
//Some code goes here.
if(ticketTypeForm == null)
    ticketTypeForm = new fTicketTypes();
ticketTypeForm.Show();

调用
应用程序.OpenForms
将为您提供所有打开表单的集合。您只需浏览每个打开的表单,检查是否已创建子表单1。如果是,只需调用
.Focus()
方法将其提前显示。如果尚未创建表单,请按照您的意愿创建表单。

调用
应用程序。OpenForms
将为您提供所有打开表单的集合。您只需浏览每个打开的表单,检查是否已创建子表单1。如果是,只需调用
.Focus()
方法将其提前显示。如果尚未创建表单,请按照您的意愿创建表单。

再次显示新表单之前,请检查其是否已打开或未使用:

Application.OpenForms.OfType<YOUR_FORM_TYPE>().Any())
Application.OpenForms.OfType().Any())
如果已打开,则忽略该命令,但如果未再次打开,则可以执行以下操作:

    ticketTypesForm myTicketTypesForm;
    private void OpenDialog(object sender, EventArgs e)
    {
        if (!Application.OpenForms.OfType<ticketTypesForm>().Any())
        {
            if (myTicketTypesForm == null)
                myTicketTypesForm = new ticketTypesForm();
            myTicketTypesForm.Show();
        }
        else
        {
            myTicketTypesForm.Focus();
        }
    }
ticketTypesForm我的ticketTypesForm;
私有void OpenDialog(对象发送方、事件参数)
{
如果(!Application.OpenForms.OfType().Any())
{
如果(myTicketTypesForm==null)
myTicketTypesForm=新的ticketTypesForm();
myTicketTypesForm.Show();
}
其他的
{
myTicketTypesForm.Focus();
}
}

再次显示新表单之前,请检查其是否已打开或未使用:

Application.OpenForms.OfType<YOUR_FORM_TYPE>().Any())
Application.OpenForms.OfType().Any())
如果已打开,则忽略该命令,但如果未再次打开,则可以执行以下操作:

    ticketTypesForm myTicketTypesForm;
    private void OpenDialog(object sender, EventArgs e)
    {
        if (!Application.OpenForms.OfType<ticketTypesForm>().Any())
        {
            if (myTicketTypesForm == null)
                myTicketTypesForm = new ticketTypesForm();
            myTicketTypesForm.Show();
        }
        else
        {
            myTicketTypesForm.Focus();
        }
    }
ticketTypesForm我的ticketTypesForm;
私有void OpenDialog(对象发送方、事件参数)
{
如果(!Application.OpenForms.OfType().Any())
{
如果(myTicketTypesForm==null)
myTicketTypesForm=新的ticketTypesForm();
myTicketTypesForm.Show();
}
其他的
{
myTicketTypesForm.Focus();
}
}
  • 如果您的应用程序可以在模式模式下使用子窗口(您不需要用户与父窗口交互),则只需使用子窗口作为模式。窗户总是在上面

    var ticketTypesForm=新的fTicketTypes(); ticketTypesForm.ShowDialog(此)

  • 此外,当用户关闭窗口时,您的应用程序可以通过方法Hide()关闭子窗口。因此,该对话框将永远不会被处理。但在这种情况下,必须使用相同的ticketTypesForm实例(而不是每次打开窗口时都创建新实例)

  • 初始化应用程序或首次显示

    var ticketTypesForm = new fTicketTypes();
    
    展示

    接近

  • 如果您的应用程序可以在模式模式下使用子窗口(您不需要用户与父窗口交互),则只需使用子窗口作为模式。窗户总是在上面

    var ticketTypesForm=新的fTicketTypes(); ticketTypesForm.ShowDialog(此)

  • 此外,当用户关闭窗口时,您的应用程序可以通过方法Hide()关闭子窗口。因此,该对话框将永远不会被处理。但在这种情况下,必须使用相同的ticketTypesForm实例(而不是每次打开窗口时都创建新实例)

  • 初始化应用程序或首次显示

    var ticketTypesForm = new fTicketTypes();
    
    展示

    接近


    但是如何在第一个计划中打开窗口(激活?),但是如何在第一个计划中打开窗口(激活?)如果要在某个事件上打开表单,请确保ticketTypeForm在事件处理程序代码中可见。如果要在某个事件上打开表单,请确保ticketTypeForm在事件处理程序代码中可见。这是解决此问题的原因。感谢链接!不知道Application.OpenForms存在固有问题。感谢您指出正确的方向。:)谢谢你的链接!不知道Application.OpenForms存在固有问题。感谢您指出正确的方向。:)