2011-03-08 29 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(); 
}