Q
防止多個表單實例
6
A
回答
2
兩個選項,這取決於你的需要:
使用
ShowDialog
代替Show
,這將打開一個模式窗口。如果您不需要主窗體在子窗體打開時處於活動狀態,則這是顯而易見的解決方案。或者跟蹤已經在主窗體中打開的窗口,如果窗口已經打開,則不執行任何操作。如果你希望用戶能夠在子表單已經打開的情況下使用主表單,那麼可能需要打開其他表單。
0
禁用主窗體,直到子窗體消失或禁用按鈕。
button_onClick(object Sender, EventArgs e)
{
Button btn = sender as Button;
btn.Enabled = false;
Form myform = new MyForm();
myform.Show();
}
當然,你真的應該使用form.ShowDialog()
而不是form.Show()
如果你想模態行爲。
2
做這樣的事情:
SingleForm myform = null;
void ShowMyForm_Click(object sender, EventArgs e)
{ if (myform == null)
{
myform = new SingleForm();
}
myform.Show();
myform.BringToFront();
}
1
力表單對象堅持Singleton模式
0
我更喜歡使用泛型和延遲加載來處理我的形式。由於我的所有表單都是從一個基類繼承而來,所以我可以使用相同的方法將表單帶到前面,將它們發送到後面,銷燬它們,啓動它們等。
如果您保留一個表單管理器類負責管理任何已加載的表單,您可以將任何形式帶到您想要的前端,或防止特定表單能夠返回,除非滿足某些標準。
public void LoadForm<T>() where T : MyNameSpace.MyBaseForm
{
// Load all your code in this joint and just call it when you
// need a form. In here, you can determine if a copy of the form
// already exists and then bring it forward or not
}
相關問題
- 1. 防止顯示一個表單的多個實例
- 2. 如何防止表單的多個實例?
- 3. 使用excel插件防止多個單例對象的實例
- 4. 如何防止HAProxy的多個實例?
- 5. 防止創建多個GUI實例
- 6. jquery防止插件的多個實例
- 7. 防止對象的多個實例
- 8. 防止單個可執行文件的多個進程實例
- 9. 表單的多個實例
- 10. 防止活動的多重實例化
- 11. Knockout.js - 防止多個表單提交
- 12. 防止多個表單提交
- 13. 防止多個表單提交MVC Jquery
- 14. 防止多個表單提交
- 15. 防止JWPlayer多次加載JWPLAYER.SWF多個實例
- 16. 如何防止某個類的多個對象實例化
- 17. 防止colorbox實例關閉
- 18. 停止多個setTimeout實例
- 19. memcache,多個實例與單個實例
- 20. 防止TabControl中的頁面的多個實例
- 21. JBOSS - 如何防止配置的多個實例啓動
- 22. Android IntentService - 防止同一請求的多個實例
- 23. 防止多個服務實例 - 最佳方法?
- 24. 防止我的應用程序的多個實例
- 25. 防止.NET中給定應用程序的多個實例?
- 26. 如何防止Electron中的多個實例
- 27. 防止啓動Java應用程序的多個實例
- 28. 如何防止Windows 10 XAML應用程序的多個實例?
- 29. 多個實例,什麼是防止碰撞
- 30. 防止GTK應用程序的多個實例
這樣比較好,但它並不能防止用戶意外或故意將主窗體再次帶到最前面。 – 2010-02-01 01:11:01
他沒有說主表單必須留在後臺......他只是不希望用戶能夠打開另一個表單,當按鈕被點擊時......;)但是thx的編輯。 .. 哦......我誤解了我的猜測。我以爲有一個按鈕被點擊時打開了第二個窗體... idk – IAbstract 2010-02-01 01:26:24
我打算添加.ShowDialog()作爲另一個選項,但John K.&Johannes打敗了我 – IAbstract 2010-02-01 01:27:39