我有一个表单Form1
,其中包含一个可以创建其他表单的按钮。但是,我想一次只创建一个额外的表单。以下是我的以下代码实现。我尝试使用Focus
属性,但它不起作用。
private void addLocation(object sender, MouseClickEventArgs e)
{
Form2 form2 = new Form2();
form2.Show();
form2.Focus();
}
答案 0 :(得分: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();
}
}
答案 1 :(得分: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();
}
答案 2 :(得分:0)
您可以通过更改光标来禁止用户单击按钮,然后在代码创建表单完成后或以自己的形式恢复
// Set cursor as hourglass
Cursor.Current = Cursors.WaitCursor;
//在这里执行时间密集的哈希代码......
//将光标设置为默认箭头 Cursor.Current = Cursors.Default;