2011-03-08 62 views
6

在VB.NET中有一個選項爲「自動地保存退出設置」有沒有在C#中的等價選項,或者做一個需要寫出下面的代碼?」自動保存退出C#設置

private void frmMain_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    Properties.Settings.Default.Save(); 
} 

回答

14

你可以使用ApplicationExit代替。

Application.ApplicationExit += new EventHandler(Application_ApplicationExit); 

void Application_ApplicationExit(object sender, EventArgs e) 
{ 
    Settings.Default.Save(); 
} 

另外,您還可以節省每一個變化:

Settings.Default.PropertyChanged += new PropertyChangedEventHandler(Default_PropertyChanged); 

void Default_PropertyChanged(object sender, PropertyChangedEventArgs e) 
{ 
    Settings.Default.Save(); 
} 

警告:如果您使用第二種方法,請考慮@Hans評論帕桑特

+0

我認爲保存每次更改的屬性會使用戶交互有點尷尬,特別是如果您允許它們取消其交互。當用戶關閉表格時取消保存,加載某個子系統可提供更好的整體體驗。 – 2011-03-08 03:04:04

+0

謝謝你的幫助... PS:傾向於同意Ritch,但我更喜歡applicationExit。 – 2011-03-08 03:05:12

+2

PropertyChanged是危險的。如果該程序隨後死亡,則由於保存的設置,啓動時可能會再次死亡。您的用戶永遠無法再次啓動它,該文件很難找到。 – 2011-03-08 03:18:38

-2

根據這article它是完全一樣的

+0

......除非沒有。原始問題詢問如何自動保存退出設置。 – 2013-08-22 23:04:23

0

是的,就是這樣,我喜歡處理保存,重置,重新加載在表單級別,因爲設置是共享的應用程序調用.Reset()FormCancel做正確的事情對於用戶來說,以及在窗體關閉時調用.Save()。如果應用程序在該點之後崩潰,設置將被保留。我認爲在應用程序上保存開始/退出不能在正確的時間爲用戶做正確的事情。

Settings.Default.Save(); 

其他有趣的方法:

.Upgrade(); 

.Reset(); 

.Reload(); 
1

你能做到這也是。如果您使用的是Windows窗體,請在設計視圖的「屬性」窗格中調出您要使用的窗體的「事件」選項卡,然後向下滾動,直到看到「關閉事件」,然後雙擊它。

接下來,只需添加如下所示的代碼即可。

private void Form1_Closing(object sender, EventArgs e) 
{ 
    Properties.Settings.Default.Save(); 
}