我有窗口“Child 1”,它从“Parent”打开。一旦我点击菜单打开“Child 1”,如果我在菜单中点击几次,它就可以打开几个窗口。如何验证窗口“Child 1”是否打开然后我们应该启动它。
我用来打开窗口的代码:
var ticketTypesForm = new fTicketTypes();
ticketTypesForm.Show();
答案 0 :(得分:3)
调用Application.OpenForms
会为您提供所有打开表单的集合。您可以浏览每个打开的表单以检查是否已创建子表单1。如果只是调用.Focus()
方法来预先设置它。如果尚未创建,请按原样创建表单。
答案 1 :(得分:1)
只需保留您班级的参考,而不是每次都创建一个。
答案 2 :(得分:1)
不要使用var,而是可以这样做
fTicketTypes ticketTypeForm;
//Some code goes here.
if(ticketTypeForm == null)
ticketTypeForm = new fTicketTypes();
ticketTypeForm.Show();
答案 3 :(得分: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();
}
}
答案 4 :(得分:0)
如果您的应用可以在模态模式下使用子窗口(您不需要用户与父窗口进行交互),那么只需将子窗口用作模态。窗口始终位于顶部。
var ticketTypesForm = new fTicketTypes(); ticketTypesForm.ShowDialog(本);
当用户关闭窗口时,您的应用也可以通过方法Hide()关闭子窗口。所以对话将永远不会被处理掉。但在这种情况下,您必须使用相同的ticketTypesForm实例(每次打开窗口时都不创建新实例)
初始化应用或首次显示
var ticketTypesForm = new fTicketTypes();
显示
ticketTypesForm.Show(this);
靠近
ticketTypesForm.Hide();