C 中WinForm程式退出方法技巧總結

2022-02-22 11:08:17 字數 4015 閱讀 6054

一、關閉窗體 

system.environment.exit(0); 等他們各自的方法不一樣,下面我們就來詳細介紹一下。 

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

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

二、登入窗體與主窗體的關閉 

有許多人在用做c# 做登入窗體時會遇到這樣的問題,登入成功後當前登入form關閉,開啟main窗體,但main窗體點關閉按鈕後程式仍在程序仍舊在執行。 

事實上,關閉main窗體,只是關閉了main窗體的執行緒,並沒有關閉程式的主線程,即程式的主線程為登入from。 

方法一:(frmlogin 為登入窗體,frmmain 為主窗體) //登入窗體中「登入」按鈕的單擊事件 

private void button1_click(objectsender, eventargs e)        

}

//主窗體的formclosing事件或formclosed事件** 

private void frmmain_formclosing(object sender, formclosingeventargs e)         

//主窗體的formclosed事件** 

private void frmmain_formclosed(object sender, formclosedeventargs e)         

說明:formclosing事件或formclosed事件二選一,這兩個的區別在於 formclosed 在關閉後發生,窗體的關閉動作不可取消; 

formclosing 在關閉前發生,可取消,只要在裡面使用 e.cancel=true; 就可以讓視窗不能關閉。  

高階技巧:在退出程式前彈出確認退出程式的對話方塊 //主窗體的formclosing事件** 

private void frmmain_formclosing(object sender, formclosingeventargs e)         

if (messagebox.show("真的要退出程式嗎?", "退出程式", messageboxbuttons.okcancel) == dialogresult.cancel) 

e.cancel = true; 

////主窗體的formclosed事件** 

private void frmmain_formclosed(object sender, formclosedeventargs e)         

dispose(); 

小貼士:以下**會導致顯示確定退出的兩次對話方塊,第一次單擊「確定」第二次單擊任何乙個都會退出。 

private void frmmain_formclosing(object sender, formclosingeventargs e)         

if (messagebox.show("真的要退出程式嗎?", "退出程式", messageboxbuttons.okcancel) == dialogresult.ok) 

else

e.cancel = true;

程式入問的main()方法**,其中frmlogin為登入窗體,frmmain為主窗體  

static void main()         

frmlogin fl = new frmlogin(); 

if (fl.showdialog() == dialogresult.ok) 

//登入窗體中的「登入」按鈕** 

private void button1_click(object sender, eventargs e)         

if (txtname.text == "123456") 

this.dialogresult = dialogresult.ok; 

this.close();

一、關閉窗體 

system.environment.exit(0); 等他們各自的方法不一樣,下面我們就來詳細介紹一下。 

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

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

二、登入窗體與主窗體的關閉 

有許多人在用做c# 做登入窗體時會遇到這樣的問題,登入成功後當前登入form關閉,開啟main窗體,但main窗體點關閉按鈕後程式仍在程序仍舊在執行。 

事實上,關閉main窗體,只是關閉了main窗體的執行緒,並沒有關閉程式的主線程,即程式的主線程為登入from。 

方法一:(frmlogin 為登入窗體,frmmain 為主窗體) //登入窗體中「登入」按鈕的單擊事件 

private void button1_click(objectsender, eventargs e)        

}

//主窗體的formclosing事件或formclosed事件** 

private void frmmain_formclosing(object sender, formclosingeventargs e)         

//主窗體的formclosed事件** 

private void frmmain_formclosed(object sender, formclosedeventargs e)         

說明:formclosing事件或formclosed事件二選一,這兩個的區別在於 formclosed 在關閉後發生,窗體的關閉動作不可取消; 

formclosing 在關閉前發生,可取消,只要在裡面使用 e.cancel=true; 就可以讓視窗不能關閉。  

高階技巧:在退出程式前彈出確認退出程式的對話方塊 //主窗體的formclosing事件** 

private void frmmain_formclosing(object sender, formclosingeventargs e)         

if (messagebox.show("真的要退出程式嗎?", "退出程式", messageboxbuttons.okcancel) == dialogresult.cancel) 

e.cancel = true; 

////主窗體的formclosed事件** 

private void frmmain_formclosed(object sender, formclosedeventargs e)         

dispose(); 

小貼士:以下**會導致顯示確定退出的兩次對話方塊,第一次單擊「確定」第二次單擊任何乙個都會退出。 

private void frmmain_formclosing(object sender, formclosingeventargs e)         

if (messagebox.show("真的要退出程式嗎?", "退出程式", messageboxbuttons.okcancel) == dialogresult.ok) 

else

e.cancel = true;

程式入問的main()方法**,其中frmlogin為登入窗體,frmmain為主窗體  

static void main()         

frmlogin fl = new frmlogin(); 

if (fl.showdialog() == dialogresult.ok) 

//登入窗體中的「登入」按鈕** 

private void button1_click(object sender, eventargs e)         

if (txtname.text == "123456") 

this.dialogresult = dialogresult.ok; 

this.close();

C 中WinForm程式退出方法

1.this.close 只是關閉當前視窗,若不是主窗體的話,是無法退出程式的,另外若有託管執行緒 非主線程 也無法乾淨地退出 4.system.environment.exit 0 這是最徹底的退出方式,不管什麼執行緒都被強制退出,把程式結束的很乾淨。下面看一些例項 當我開啟乙個子窗體,進行某項操...

C 中WinForm程式退出方法技巧總結

c 中winform程式退出方法技巧總結 一 關閉窗體 1.this.close 只是關閉當前視窗,若不是主窗體的話,是無法退出程式的,另外若有託管執行緒 非主線程 也無法乾淨地退出 4.system.environment.exit 0 這是最徹底的退出方式,不管什麼執行緒都被強制退出,把程式結束...

C 中WinForm程式退出方法技巧總結

一 關閉窗體 1.this.close 只是關閉當前視窗,若不是主窗體的話,是無法退出程式的,另外若有託管執行緒 非主線程 也無法乾淨地退出 4.system.environment.exit 0 這是最徹底的退出方式,不管什麼執行緒都被強制退出,把程式結束的很乾淨。二 登入窗體與主窗體的關閉 有許...