我有兩種形式;一個叫做'贏',另一個叫'失'。 「贏」表單上有一個按鈕,顯示「損失」表單。點擊此按鈕時,兩種形式都可見。當我關閉了「損失」的形式,然後點擊「雙贏」窗體上的按鈕,我再次出現以下情況例外:c#winform編程
An unhandled exception has occured: Unable to access a disposed object ..object :form
請可能有人點我在正確的方向,所以我可以解決這個問題?
我有兩種形式;一個叫做'贏',另一個叫'失'。 「贏」表單上有一個按鈕,顯示「損失」表單。點擊此按鈕時,兩種形式都可見。當我關閉了「損失」的形式,然後點擊「雙贏」窗體上的按鈕,我再次出現以下情況例外:c#winform編程
An unhandled exception has occured: Unable to access a disposed object ..object :form
請可能有人點我在正確的方向,所以我可以解決這個問題?
在引用它之前,您可以驗證表單的IsDisposed屬性。
E.g.關於「雙贏」的形式按鈕單擊處理程序:
if (loss.IsDisposed)
return;
// do stuff with loss form
更新:我認爲這是最好不要共享形式之間的控制。
這是因爲你的'損失'表已經關閉並且已經處理完畢,所以不能再使用了。您需要創建窗體的新實例,像這樣(不知道你的代碼究竟是如何看起來):
this.loss = new LossForm();
this.loss.Show();
這不是你要一個很好的模式,但你可以掛接到的FormClosing事件,取消它,然後隱藏表單。這意味着表單不會自動處理,您可以再次致電演出。
把時間放在一邊研究MVC架構 - 起初看起來很複雜,但它確實有幫助。
您是否確定您每次點擊按鈕時都會創建一個窗體的新實例... – 2011-01-24 13:14:26
肯定需要了解更多代碼 – 2011-01-24 13:22:23
您想實現什麼目標? '贏'的形式應該從'損失'形式檢索一些數據? – 2011-01-24 13:39:36