c 視窗關閉方法

2022-05-06 23:12:06 字數 991 閱讀 5440

背景:點選datagridview某條資訊彈出資訊詳情視窗,當連續點選時需要關閉之前的詳情視窗。

實現方式:

父視窗中 全域性建立子視窗(msgdetailfrm  ): msgdetailfrm defrm = new msgdetailfrm();

在datagridview的雙擊事件中:

private

void datagridview1_celldoubleclick(object

sender, datagridviewcelleventargs e)

defrm.show();

}

但在實際操作時,點選詳情視窗關閉,再次點選資訊類表中某條資訊時,報錯,檢視原因:

關閉視窗不為空!

也就是關閉視窗後, 

defrm!=null
但呼叫

defrm.show();時報錯

修改:

全域性變數中: msgdetailfrm defrm;

defrm = null;

defrm = new msgdetailfrm();

在呼叫deform時強制為null,重新例項化

細想之後,發現還是對視窗的關閉認識不清,以及不當的程式設計習慣造成。

解決方法:

1.在關閉視窗時釋放視窗資源的同時,也將變數置為null;

2.換用徹底關閉視窗的方法。

補充:視窗關閉的幾種方法比較

1.this.close();   只是關閉當前視窗,若不是主窗體的話,是無法退出程式的,另外若有託管執行緒(非主線程),也無法乾淨地退出;

4.system.environment.exit(0);   這是最徹底的退出方式,不管什麼執行緒都被強制退出,把程式結束的很乾淨。 

一般情況下不需要給應用程式寫退出函式,執行預設退出函式即可,但是有情況還需要用以上幾種函式的。

使用C 開啟新視窗關閉舊視窗的方法

最近在練習製作一套會員積分管理系統,順便研究了一下開啟新視窗後關閉舊視窗的方法,在網上查閱了很多資料,又結合自己的試驗總結如下,如果有什麼紕漏,還請大家多多指正。1 網上流傳最廣的應該是隱藏法了,原理就是把舊視窗隱藏掉,再開啟新視窗。具體的 如下 在舊視窗中的合適位置寫這些 新建乙個newform視...

C winform登入視窗關閉方法

二我們的引用程式中需要乙個登陸視窗 login form 在登陸成功後,我們要開啟主視窗 main form,然後需要關閉 login form,這裡有幾種解決方案。1.把login form 隱藏起來,設定訪問屬性為不能訪問。再開啟main form。2.先開啟 main form 但是先隱藏起來...

C winform登入視窗關閉方法

一 二我們的引用程式中需要乙個登陸視窗 login form 在登陸成功後,我們要開啟主視窗 main form,然後需要關閉 login form,這裡有幾種解決方案。1.把login form 隱藏起來,設定訪問屬性為不能訪問。再開啟main form。2.先開啟 main form 但是先隱藏...