0

I have window "Child 1", it opens from "Parent". Once I click in menu to open "Child 1" it can open several windows if I click several times in the menu. How to verify if the window "Child 1" opens then we should just bring it up.

The code which I use to open the window:

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

5 回答 5

3

调用Application.OpenForms将为您提供所有打开表单的集合。您可以浏览每个打开的表单以检查是否已经创建了子表单 1。如果只是调用.Focus()方法将其放在前面。如果尚未创建,请按照您的意愿创建表单。

于 2013-04-28T16:35:51.300 回答
1

只需保留您班级的参考资料,而不是每次都创建一个。

于 2013-04-28T16:23:20.820 回答
1

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

Application.OpenForms.OfType<YOUR_FORM_TYPE>().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();
        }
    }
于 2013-04-28T16:37:12.903 回答
1

不要使用 var,而是可以这样做

fTicketTypes ticketTypeForm;
//Some code goes here.
if(ticketTypeForm == null)
    ticketTypeForm = new fTicketTypes();
ticketTypeForm.Show();
于 2013-04-28T16:29:13.477 回答
0
  1. 如果您的应用可以在模态模式下使用子窗口(您不需要用户与父窗口交互),那么只需将子窗口用作模态。窗口始终在顶部。

    var ticketTypesForm = new fTicketTypes(); ticketTypesForm.ShowDialog(this);

  2. 当用户关闭窗口时,您的应用程序还可以通过 Hide() 方法关闭子窗口。所以对话框永远不会被释放。但在这种情况下,您必须使用同一个 ticketTypesForm 实例(不是每次打开窗口时都创建新实例)

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

var ticketTypesForm = new fTicketTypes();

节目

ticketTypesForm.Show(this);

ticketTypesForm.Hide();
于 2013-04-28T16:52:21.660 回答