我的 c# windows 專案中有兩種形式。第一個表單稱為“loginform”,另一個稱為“mainform”。我想通過單擊按鈕移動到主表單但是當我到達主表單時,問題是當我嘗試關閉此處名為“mainform”的第二個表單時,應用程式沒有關閉,我必須使用 Visual Studio終止專案。下面是移動到第二種形式的代碼
this.Hide();
mainform mf = new mainform();
mf.Show();
uj5u.com熱心網友回復:
我找到了答案。在第二個表單上,在 formclosed 事件上添加以下代碼。
private void mainform_FormClosed(object sender, FormClosedEventArgs e)
{
Application.ExitThread();
}
uj5u.com熱心網友回復:
你遇到的問題是因為“你的代碼”基本上“扔掉”了任何參考,this當代碼將其設定為“隱藏”時......
this.Hide();
這行代碼執行后,mainform被創建并顯示......
mainform mf = new mainform();
mf.Show();
假設上面的代碼“之后”沒有代碼……那么this現在基本上已經丟失了。用戶無法看到表單或與之互動。mainform顯示了……但它對 一無所知this。this現在丟失了,你沒有辦法找回來。這就是它繼續運行的原因。
顯然,mainform不知道thisie ...“創建”它的形式,但是它確實需要this保持活力。如果我們“關閉”this并this創建mainform……那么mainform取決于this并且在this關閉時也會關閉。
mainform mf = new mainform();
mf.Show();
this.Close();
然后,mainform一this關閉就被殺死。所以這是行不通的。但是……如果您將 the 更改Show為ShowDialog… for the mf.ShowDialog(),那么它將起作用并this正確關閉。
因此,如果您想“關閉”“創建”另一個表單的表單,那么您應該為mainform或 傳遞this給 的另一個行程,mainform并在完成后讓它關閉它。我相信還有其他方法可以做到這一點,如果Application.ExitThread();......適合你,那就去做吧。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/342658.html
