C# 在运行时添加用户设置属性(Winforms)
我正在使用C#、win forms和.NET2.0 我试图在运行时在用户设置文件中添加属性,但无法在某些位置的settings.settings文件中查看添加的属性,即文件存在但未添加属性 当我调用此属性时,不会出现错误,因为它可以正常工作 使用下面的代码C# 在运行时添加用户设置属性(Winforms),c#,winforms,.net-2.0,settings.settings,C#,Winforms,.net 2.0,Settings.settings,我正在使用C#、win forms和.NET2.0 我试图在运行时在用户设置文件中添加属性,但无法在某些位置的settings.settings文件中查看添加的属性,即文件存在但未添加属性 当我调用此属性时,不会出现错误,因为它可以正常工作 使用下面的代码 MessageBox.Show(***********.Properties.Settings.Default.Properties["NewProperty"].DefaultValue); 我已经编写了以下代码 调用函数 clCommo
MessageBox.Show(***********.Properties.Settings.Default.Properties["NewProperty"].DefaultValue);
我已经编写了以下代码
调用函数
clCommonFuncation cl = new clCommonFuncation();
if (***********.Properties.Settings.Default.Properties["NewProperty"] == null)
{
cl.addPropertyinSettingsFile("NewProperty",
***********.Properties.Settings.Default.Providers,
***********.Properties.Settings.Default.Providers["LocalFileSettingsProvider"],
***********.Properties.Settings.Default.Properties,
typeof(string),"ASD",null);
***********.Properties.Settings.Default.Save();
***********.Properties.Settings.Default.Reload();
}
这就是所谓的行动
public void addPropertyinSettingsFile(string settingName,
SettingsProviderCollection settingsProviderCollection,
SettingsProvider settingsProvider,
SettingsPropertyCollection settingPrpertyCollection,
Type dataType,
object defaultValue,
object settingDefault)
{
SettingsProperty lvSettingProperty = new SettingsProperty(settingName);
lvSettingProperty.DefaultValue = defaultValue;
lvSettingProperty.IsReadOnly = false;
lvSettingProperty.PropertyType = dataType;
lvSettingProperty.Provider = settingsProvider;
lvSettingProperty.SerializeAs = SettingsSerializeAs.String;
lvSettingProperty.Name = settingName;
lvSettingProperty.Attributes.Add(typeof(System.Configuration.UserScopedSettingAttribute),
new System.Configuration.UserScopedSettingAttribute());
settingPrpertyCollection.Add(lvSettingProperty);
}
我做错了什么?
如有任何建议,将不胜感激
谢谢你我认为你最好用你的应用程序设置编写一个自定义的
结构
或类
,并使用序列化来加载和保存它-这在你的情况下更加清晰和相关。你不能在运行时在.Net设置文件中添加或删除属性。网络上有一些技巧,但没有一个是适用的,也没有一个是你想要的解决方案
设置文件并非为此目的而设计的。这些文件被设计为在设计时填充,并且在运行时只能“读取”或“修改”
原因是,当您在designer中创建和编辑设置文件时(通过双击解决方案资源管理器中的设置文件或选择“项目属性”菜单项中的“设置”选项卡),Visual studio将创建一个ApplicationSettings类(派生自ApplicationSettings基类)其中包含您创建的任何设置字段的数据成员以及一些附加属性(如[ApplicationScopedSetting]或[UserScopedSettings])。在运行时,.Net运行时使用此类与seetings文件交互。因此,当您尝试在运行时添加属性时,ApplicationSettings类中没有支持文件和属性,CLR不知道如何处理它们
结论:设置文件具有特定用途,不适合应用程序中的任何任意配置持久化。尝试使用完全支持您所需内容的XML文件,从读取、写入、添加、删除、更新基本类型属性(string、char、int等),到使用XML.serilization支持复杂对象