我有一个用户可以点击的按钮。根据他点击的按钮,该值以及他的IP应该保存在Properties.Settings.Default
中,这可能已经存在,也可能不存在。
var property = new SettingsProperty("curVol" + ip);
property.DefaultValue = "DEFAULT";
Properties.Settings.Default.Properties.Add(property);
Properties.Settings.Default.Save();
Properties.Settings.Default.Reload();
/* Now Save to newly created Property */
Properties.Settings.Default["curVol" + ip] = ((XmlElement)xmlResponse.FirstChild.FirstChild.FirstChild).InnerText;
/* NULL POINTER EXCEPTION */
如何动态创建新属性并在之后使用它?
奖金:(我想我可以自己搞清楚,如果我有第一部分),我如何检查该物业是否已存在?检查null
?
注意:的
表单关闭后不必持久化,它只适用于当前运行时。
修改
我想我可能对如何实现我想要的东西有错误的想法:该程序能够在点击时减少所有我的超音速扬声器(在listView中)的音量。当我点击“大声”然后它应该将音量调到之前的水平,每个音量可能有不同的级别,并且有一个未知数量的扬声器,所以“静音”功能应该以某种方式保存当前的水平每个扬声器在关闭之前。现在我考虑一下,全局变量应该可以解决这个问题吗?
自己的答案
跳过这个想法,改为使用它:
var list = new List<Cfg>();
foreach (ListViewItem item in sonosListExt1.Items)
{
list.Add(new Cfg { Ip = item.Text, Volume = "5" });
}
var gC = new GetConfig
{
Sonos = list
};
if (!Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + "cfg"))
{
Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + "cfg");
}
File.WriteAllText(AppDomain.CurrentDomain.BaseDirectory + "cfg\\config.json", JsonConvert.SerializeObject(gC));
这个班级:
public class GetConfig
{
public List<Cfg> Sonos { get; set; }
}
public class Cfg
{
public string Ip { get; set; }
public string Volume { get; set; }
}
感谢提示!