我有一个表格Form1
,并带有一个可创建其他表格的按钮。但是,我只想一次创建1个附加表单。以下是我的代码实现以下。我试图使用Focus
属性,但它不起作用。C#防止创建其他表格
private void addLocation(object sender, MouseClickEventArgs e)
{
Form2 form2 = new Form2();
form2.Show();
form2.Focus();
}
我有一个表格Form1
,并带有一个可创建其他表格的按钮。但是,我只想一次创建1个附加表单。以下是我的代码实现以下。我试图使用Focus
属性,但它不起作用。C#防止创建其他表格
private void addLocation(object sender, MouseClickEventArgs e)
{
Form2 form2 = new Form2();
form2.Show();
form2.Focus();
}
使用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();
}
}
您可以点击按钮改变光标然后还原代码之后创建的形式完成或形式,它自
// Set cursor as hourglass
Cursor.Current =光标禁用用户.WaitCursor;
//这里,可执行的时间密集型的散列码...
//设置光标默认箭头 Cursor.Current = Cursors.Default;
所以,如果形式打开了它应该被带到前面和重点(显示仿真),如果没有则打开创建和显示:
// 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();
}