Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C#应用程序中存储数据_C# - Fatal编程技术网

在C#应用程序中存储数据

在C#应用程序中存储数据,c#,C#,我收到一条消息,提示用户升级连接到计算机的某些设备。我想让用户在以后禁用此消息,方法是在按“取消”之前选中一个框 如何存储此用户选项,以便下次执行程序时,根据用户在应用程序最后一个会话中所做的选择,避免显示此消息 您需要使应用程序中的消息使用自定义表单。该表单需要显示消息以及复选框。然后你会想把这些信息存储在某个地方。我将在应用程序配置文件中说 因此,要将数据保存在配置文件中,首先构建一些扩展方法以使其更容易: public static class Extensions { publi

我收到一条消息,提示用户升级连接到计算机的某些设备。我想让用户在以后禁用此消息,方法是在按“取消”之前选中一个框


如何存储此用户选项,以便下次执行程序时,根据用户在应用程序最后一个会话中所做的选择,避免显示此消息

您需要使应用程序中的消息使用自定义表单。该表单需要显示消息以及复选框。然后你会想把这些信息存储在某个地方。我将在应用程序配置文件中说

因此,要将数据保存在配置文件中,首先构建一些扩展方法以使其更容易:

public static class Extensions
{
    public static void SetValue(this KeyValueConfigurationCollection o,
        string key,
        string val)
    {
        if (!o.AllKeys.Contains(key)) { o.Add(key, val); }
        else { o[key].Value = val; }
    }

    public static string GetValue(this NameValueCollection o,
        string key,
        object defaultVal = null)
    {
        if (!o.AllKeys.Contains(key)) { return Convert.ToString(defaultVal); }
        return o[key];
    }
}
然后,当您想读取该值以确定是否应该显示该消息时,请执行以下操作:

var val = (bool)ConfigurationManager.AppSettings.GetValue("ShowTheMessage");
var config = ConfigurationManager.OpenExeConfiguration(
    ConfigurationUserLevel.None);
var app = config.AppSettings.Settings;

app.SetValue("ShowTheMessage", checkBox.Checked);

config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
然后,如果要保存该值,请执行以下操作:

var val = (bool)ConfigurationManager.AppSettings.GetValue("ShowTheMessage");
var config = ConfigurationManager.OpenExeConfiguration(
    ConfigurationUserLevel.None);
var app = config.AppSettings.Settings;

app.SetValue("ShowTheMessage", checkBox.Checked);

config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");

最干净的两种方法是注册表和

我更喜欢用户设置,因为:

  • 它们是XML格式的(不需要注册表黑客)
  • 很多繁重的工作都是由该框架完成的
  • 使用ClickOnce,用户设置在升级过程中自动保持不变
  • 您只需转到项目属性中的“设置”选项卡,添加设置,然后将其类型设置为“用户”。
    更改设置后,只需保存设置即可:

    Properties.Settings.Default.ShowDisconnectMessage = false;
    Properties.Settings.Default.Save();
    
    注册表的工作原理类似,但它需要更多的代码,并且不是强类型:

    RegistryKey key = Registry.CurrentUser.OpenSubKey("Software",true);
    Key = key.OpenSubKey("AppName", true);
    key.SetValue("ShowDisconnectMessage ", "false");
    

    登记处?用户设置?阅读有关隔离存储类(System.IO.IsolatedStorage)的文档。这对于少量存储可能很有用。对象序列化?@DStanley可能是用户设置?我不知道,我的经验很少。最简单的方法(不一定是最好的)可能就是使用app.config:。这个问题显示了如何阅读,但你也可以在其中设置键。谢谢,这很有魅力!