簡體   English   中英

C #防止創建附加表單

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM