[英]C #Prevent from creating additional form
我有一個帶有創建其他表單的按鈕的表單Form1
。 但是,我想一次只創建 1 個附加表單。 以下是我的以下代碼實現。 我嘗試使用Focus
屬性,但它不起作用。
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();
}
}
因此,如果表單打開,則應將其置於前面並聚焦(顯示仿真),如果未打開,則創建並顯示:
// 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();
}
您可以通過更改光標來禁用用戶單擊按鈕,然后在代碼創建表單完成后或在表單中恢復它
// Set cursor as hourglass
Cursor.Current = Cursors.WaitCursor;
// 在此處執行耗時的散列代碼...
// 將光標設置為默認箭頭 Cursor.Current = Cursors.Default;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.