C# 在退出C时自动保存设置#

C# 在退出C时自动保存设置#,c#,settings,C#,Settings,在VB.NET中有一个“自动保存退出时的设置”选项。C#中是否有等效选项?或者是否需要编写以下代码?” 根据这一点,这完全是一样的。我更喜欢在表单级别处理保存、重置和重新加载,因为这些设置在整个应用程序中共享。在表单取消上调用.reset()对用户来说是正确的,调用.save()也是正确的当表单关闭时。如果应用程序在此之后崩溃,则会保留设置。我认为在AppStart/Exit上保存不会在正确的时间为用户做正确的事情 Settings.Default.Save(); 其他有趣的方法: .Upgr

在VB.NET中有一个“自动保存退出时的设置”选项。C#中是否有等效选项?或者是否需要编写以下代码?”


根据这一点,这完全是一样的。我更喜欢在表单级别处理保存、重置和重新加载,因为这些设置在整个应用程序中共享。在表单取消上调用.reset()对用户来说是正确的,调用.save()也是正确的当表单关闭时。如果应用程序在此之后崩溃,则会保留设置。我认为在AppStart/Exit上保存不会在正确的时间为用户做正确的事情

Settings.Default.Save();
其他有趣的方法:

.Upgrade();

.Reset();

.Reload();

您可以改用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 Passant @

的评论。您也可以这样做。如果您使用Windows窗体,请从“设计”视图中的属性窗格中为您要使用的窗体生成“事件”选项卡,然后向下滚动,直到您看到关闭事件,然后双击它。

接下来,只需添加如下所示的代码

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

我认为每次更改时保存属性都会让用户交互有点尴尬,特别是如果您允许他们取消交互。当用户关闭表单、取消、加载某些子系统时保存会提供更好的总体体验。感谢您的帮助…PS:倾向于同意Ritch,但我更喜欢applicationExit。PropertyChanged是危险的。如果程序随后死掉,由于保存的设置,它可能会在启动时再次死掉。用户永远无法重新启动它,文件很难找到。@Hans-这是一个有趣的问题。我将把它添加到我的批评列表中……除了它没有。最初的问题是如何自动启动退出时保存设置。
private void Form1_Closing(object sender, EventArgs e)
{
    Properties.Settings.Default.Save();
}