2017-01-24 55 views
-2

我正在使用vs2013 c#windows窗體。在form1上,有一個按鈕,單擊該按鈕時,用戶將轉到第二個窗體form2Form2將作爲內部程序的收據,所以它需要打開不止一次。但是,由於我的listboxesform2上有form 1的信息,因此代碼: Form2 form2 = new Form2();是在課程級別而不是本地在button_click事件中編寫的。每次我嘗試第二次打開form2時,這會導致運行時錯誤。這是我在收到,我寫的消息:form2.show();第二次打開窗體導致運行時錯誤

An unhandled exception of type 'System.ObjectDisposedException' occurred in System.Windows.Forms.dll 
Additional information: Cannot access a disposed object. 

我怎樣才能解決這個問題,而無需移動上述代碼級的水平了嗎?謝謝。

+3

使用'Hide',而不是'Close'。 –

+0

或者使用'ShowDialog',當你關閉的時候不會丟棄它(但是確保在適當的時候處理) – Crowcoder

回答

0

我可能需要更多一點的信息,但.....

您可以嘗試在窗口2的constructror添加OBJEKT。 然後從Form1中引入您需要的數據。

像這樣(在Form):

旅客機myguest =新旅客(); Form2 form2 = new Form2(myGuest);

在窗口2:

寫像 公共窗口2構造(客戶thisGuest){} 在窗體2創建一個對象(客戶機myguest)

...和使用方法,如: InitializeGUI( ){機myguest = thisGuest}

希望它能幫助:)