簡體   English   中英

c#winform編程

[英]c# winform programming

我有兩種形式; 一個叫做“勝利”,另一個叫做“失敗”。 “贏”表單上有一個按鈕,顯示“丟失”表單。 單擊此按鈕時,兩個表單都可見。 當我關閉'丟失'表單然后再次單擊'win'表單上的按鈕時,我得到以下異常:

An unhandled exception has occured: Unable to access a disposed object ..object :form

請有人指出我正確的方向,所以我可以解決這個問題嗎?

這是因為你的“損失”形式已經關閉並且已被處理掉,所以它不能再被使用了。 您需要創建表單的新實例,如此(不知道您的代碼看起來如何):

this.loss = new LossForm(); 
this.loss.Show();

在引用表單之前,您可以驗證表單的IsDisposed屬性。

例如'win'表單上的按鈕點擊處理程序:

if (loss.IsDisposed)
  return;

// do stuff with loss form

更新:我認為最好不要在表單之間共享控制權。

  1. 您可以將“丟失”表單作為Dialog運行。 在對話框關閉后讀取所有需要的屬性。
  2. 您可以訂閱“損失”表單事件並以“贏”形式處理它們。

這不是一個非常好的模型,但你可以掛鈎到formClosing事件,取消它然后隱藏表單。 這意味着表格不會自動處理,你可以再次打電話給show。

花一些時間來研究MVC架構 - 它起初看起來很復雜,但它確實有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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