背景:點選datagridview某條資訊彈出資訊詳情視窗,當連續點選時需要關閉之前的詳情視窗。
實現方式:
父視窗中 全域性建立子視窗(msgdetailfrm ): msgdetailfrm defrm = new msgdetailfrm();
在datagridview的雙擊事件中:
private但在實際操作時,點選詳情視窗關閉,再次點選資訊類表中某條資訊時,報錯,檢視原因:void datagridview1_celldoubleclick(object
sender, datagridviewcelleventargs e)
defrm.show();
}
關閉視窗不為空!
也就是關閉視窗後,
defrm!=null但呼叫
defrm.show();時報錯
修改:defrm = null;全域性變數中: msgdetailfrm defrm;
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 但是先隱藏...