在运行时存储和创建新的 WPF 应用程序设置
Store and Create new WPF App Settings on Runtime
我开始使用代码在运行时将设置添加到我的 WPF 应用程序。
我们有以下 Class 到 add/read 自定义设置:
using System;
using System.Configuration;
namespace my.Classes
{
class AppSettingHandler
{
public static void ReadAllSettings()
{
try
{
var appSettings = ConfigurationManager.AppSettings;
if (appSettings.Count == 0)
{
Console.WriteLine("AppSettings is empty.");
}
else
{
foreach (var key in appSettings.AllKeys)
{
Console.WriteLine("Key: {0} Value: {1}", key, appSettings[key]);
}
}
}
catch (ConfigurationErrorsException)
{
Console.WriteLine("Error reading app settings");
}
}
public static void ReadSetting(string key)
{
try
{
var appSettings = ConfigurationManager.AppSettings;
string result = appSettings[key] ?? "Not Found";
Console.WriteLine(result);
}
catch (ConfigurationErrorsException)
{
Console.WriteLine("Error reading app settings");
}
}
public static void AddUpdateAppSettings(string key, string value)
{
try
{
var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var settings = configFile.AppSettings.Settings;
if (settings[key] == null)
{
settings.Add(key, value);
}
else
{
settings[key].Value = value;
}
configFile.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name);
}
catch (ConfigurationErrorsException)
{
Console.WriteLine("Error writing app settings");
}
}
}
}
而且我想向我的 App.config 添加一个带有名称和值的新设置,如下所示:
AppSettingHandler.AddUpdateAppSettings("MyCustom_Setting_" + item.DomaineName.ToString(), "Domaine: " + item.DomaineName);
我没有收到任何错误和数据,但我的应用程序没有写入 App.config。
我是不是错过了重新加载配置之类的东西?
谢谢你
app.config 位于用户通常没有写入权限的应用程序目录中。 ConfigurationManager 可能会阻止写入它的尝试。
ConfigurationManager 使用位于用户 appdata 文件夹中的配置文件处理用户配置。因此,您可能必须使用
打开用户配置
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
另外 Visual Studio 具有设计器对设置的支持(Add/New Item/Settings 文件)并且设计器生成的文件具有 Save() 方法。
我开始使用代码在运行时将设置添加到我的 WPF 应用程序。 我们有以下 Class 到 add/read 自定义设置:
using System;
using System.Configuration;
namespace my.Classes
{
class AppSettingHandler
{
public static void ReadAllSettings()
{
try
{
var appSettings = ConfigurationManager.AppSettings;
if (appSettings.Count == 0)
{
Console.WriteLine("AppSettings is empty.");
}
else
{
foreach (var key in appSettings.AllKeys)
{
Console.WriteLine("Key: {0} Value: {1}", key, appSettings[key]);
}
}
}
catch (ConfigurationErrorsException)
{
Console.WriteLine("Error reading app settings");
}
}
public static void ReadSetting(string key)
{
try
{
var appSettings = ConfigurationManager.AppSettings;
string result = appSettings[key] ?? "Not Found";
Console.WriteLine(result);
}
catch (ConfigurationErrorsException)
{
Console.WriteLine("Error reading app settings");
}
}
public static void AddUpdateAppSettings(string key, string value)
{
try
{
var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var settings = configFile.AppSettings.Settings;
if (settings[key] == null)
{
settings.Add(key, value);
}
else
{
settings[key].Value = value;
}
configFile.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name);
}
catch (ConfigurationErrorsException)
{
Console.WriteLine("Error writing app settings");
}
}
}
}
而且我想向我的 App.config 添加一个带有名称和值的新设置,如下所示:
AppSettingHandler.AddUpdateAppSettings("MyCustom_Setting_" + item.DomaineName.ToString(), "Domaine: " + item.DomaineName);
我没有收到任何错误和数据,但我的应用程序没有写入 App.config。 我是不是错过了重新加载配置之类的东西?
谢谢你
app.config 位于用户通常没有写入权限的应用程序目录中。 ConfigurationManager 可能会阻止写入它的尝试。
ConfigurationManager 使用位于用户 appdata 文件夹中的配置文件处理用户配置。因此,您可能必须使用
打开用户配置ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
另外 Visual Studio 具有设计器对设置的支持(Add/New Item/Settings 文件)并且设计器生成的文件具有 Save() 方法。