创建新的SettingsProperty“在飞行中”

时间:2016-11-08 15:15:54

标签: c# winforms settings

我有一个用户可以点击的按钮。根据他点击的按钮,该值以及他的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; }
}

感谢提示!

0 个答案:

没有答案