2016-05-12 63 views
2

我有一个表格Form1,并带有一个可创建其他表格的按钮。但是,我只想一次创建1个附加表单。以下是我的代码实现以下。我试图使用Focus属性,但它不起作用。C#防止创建其他表格

private void addLocation(object sender, MouseClickEventArgs e) 
{ 
    Form2 form2 = new Form2(); 
    form2.Show(); 
    form2.Focus(); 
} 

回答

1

使用Application.OpenForms集合来检查您是否已经打开了该窗体的实例。

private void addLocation(object sender, MouseClickEventArgs e) 
{ 
    Form2 form2 = Application.OpenForms.OfType<Form2>().SingleOrDefault(); 
    if(form2 == null) 
    { 
     form2 = new Form2(); 
     form2.Show(); 
     form2.Focus(); 
    } 
} 
0

您可以点击按钮改变光标然后还原代码之后创建的形式完成或形式,它自

// Set cursor as hourglass 

Cursor.Current =光标禁用用户.WaitCursor;

//这里,可执行的时间密集型的散列码...

//设置光标默认箭头 Cursor.Current = Cursors.Default;

1

所以,如果形式打开了它应该被带到前面和重点(显示仿真),如果没有则打开创建显示

// If there're many instances, let's take the last one 
    Form2 form = Application.OpenForms 
    .OfType<Form2>() 
    .LastOrDefault(); 

    if (null == form) { 
    form = new From2(); 
    form.Show(); 
    } 
    else { 
    // Show emulation: 
    // - we don't want minimized window, 
    // - window should be at front 
    // - window should have a keyboard focus 

    if (form.WindowState == FormWindowState.Minimized) 
     form.WindowState = FormWindowState.Normal; 

    form.BringToFront(); 

    if (form.CanFocus) 
     form.Focus(); 
    }