中易网

C# Properties.Settings.Default 高分求菜鸟问题

答案:5  悬赏:60  
解决时间 2021-01-14 20:08
  • 提问者网友:未信
  • 2021-01-13 23:30
C# Properties.Settings.Default 高分求菜鸟问题
最佳答案
  • 二级知识专家网友:北方的南先生
  • 2021-01-13 23:58
你都看到了,这里你调用的是Properties["UID"].DefaultValue,也就是设置了属性的默认值!
这样是不对的,请直接赋值,如Properties["UID"]= txtUID.Text;
你可以看看系统帮你生成的那个属性的代码是怎么赋值的,肯定是这样的:
[UserScopedSettingAttribute()]
public String UID
{
get { return (String)this["UID"]; }
set { this["UID"] = value; }
}
追问:那如果我这样Properties.Settings.Default.Properties["UID"].DefaultValue = txtUID.Text;
赋值一次,那么我在其他的窗口就能调用(程序未关闭的情况下)

Properties.Settings.Default.UID==TextBox1.Text;
Properties.Settings.Default.Save();
这样写的话,那么即使我这次程序关闭了,那么我下次读取的时候直接
MessBox.Show(Properties.Settings.Default.UID);依然能把之前Save的值读取出来···
这是为什么?
追答:因为程序获取配置值得顺序是1、配置文件里保存的值,2、程序设计时指定的默认值。3、都没有就是空。而程序不保存默认值的修改,这个值只能在设计时指定,你设置了DefaultValue也就是默认值,而程序的配置文件里没有值,故而就去取这个默认值了,下次程序关闭,再打开,读取了配置文件,配置文件里没有值,也没有设置默认值,于是就没有值。直到你设置了默认值或值
全部回答
  • 1楼网友:夜余生
  • 2021-01-14 03:52
你都看到了,这里你调用的是Properties["UID"].DefaultValue,也就是设置了属性的默认值!
这样是不对的,请直接赋值,如Properties["UID"]= txtUID.Text;
你可以看看系统帮你生成的那个属性的代码是怎么赋值的,肯定是这样的:
[UserScopedSettingAttribute()]
public String UID
{
get { return (String)this["UID"]; }
set { this["UID"] = value; }
}
  • 2楼网友:山河有幸埋战骨
  • 2021-01-14 02:27
不知道
追问:fh
追答:什么fh
  • 3楼网友:千杯敬自由
  • 2021-01-14 01:10
Properties.Settings.Default.UID=TextBox1.Text;//这句赋值
Properties.Settings.Default.Save();//这句保存
Properties.Settings.Default.Properties["UID"].DefaultValue = txtUID.Text;
这个没保存吧。
数据存放在;项目目录下:Properties/Settings.Settings文件里
追问:Properties.Settings.Default.Properties["UID"].DefaultValue = txtUID.Text;
这个没保存吧。
这个怎么保存?
Properties.Settings.Default.Save();//这句保存
这样保存是保存不起来的,下次读取不到。
追答:DefaultValue 不等于Value,defaultValue是该字段的另外的一个属性:当该字段没有值时,吧DefaultValue付给该字段
你试试:
Properties.Settings.Default.Properties["UID"].DefaultValue = "test";
Properties.Settings.Default.UID = "null";//这句赋值
Properties.Settings.Default.Save();//这句保存
try
{
MessageBox.Show(Properties.Settings.Default.Properties["UID"].DefaultValue.ToString());
}
catch { }
  • 4楼网友:底特律间谍
  • 2021-01-14 00:38
1楼和2楼说的都有道理,DefaultValue和Value不一样,可以在Setting.Designer.cs里看到自动生成的代码是:
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("9")]
public int UID {
get {
return ((int)(this["UID"]));
}
set {
this["UID"] = value;
}
}
Value设置的是属性值,DefaultValue设置的是那个DefaultSettingValueAttribute的值,这个是在Reload()是读取的,一般的时候读取的时候是Value,当然设置属性值之后都需要Save(),保存当前属性值。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息