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. 使用excel插件防止多個單例對象的實例
- 3. jquery防止插件的多個實例
- 4. 防止對象的多個實例
- 5. 如何防止HAProxy的多個實例?
- 6. 表單的多個實例
- 7. 防止活動的多重實例化
- 8. 防止JWPlayer多次加載JWPLAYER.SWF多個實例
- 9. 如何防止某個類的多個對象實例化
- 10. 防止colorbox實例關閉
- 11. 停止多個setTimeout實例
- 12. 防止我的應用程序的多個實例
- 13. 防止活動的多個實例,但仍然使用onActivityResult
- 14. 如何防止同一模型的多個實例
- 15. 對話框在Win32中 - 防止多個實例
- 16. 如何防止在listview中添加行的多個實例?
- 17. 防止.NET中給定應用程序的多個實例?
- 18. 防止打開VB應用程序的多個實例
- 19. 如何防止href =#激活jQuery功能的多個實例
- 20. Android IntentService - 防止同一請求的多個實例
- 21. 刪除意見,以防止多個實例
- 22. 防止用戶打開同一網站的多個實例
- 23. 使用多個表單實例jsf 2.0
- 24. 呈現多個表單實例
- 25. Javascript和表單的多個實例
- 26. 如何防止多次點擊多個表單提交的PHP
- 27. Spring創建單例的多個實例?
- 28. 在實例上防止ActiveRecord保存()
- 29. 防止其他類的類實例化
- 30. 如何防止繼承類實例
這樣比較好,但它並不能防止用戶意外或故意將主窗體再次帶到最前面。 – 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