C#,Winform,如何用纯代码简便地增加和存取Settings?

2025-01-01 20:08:08
推荐回答(5个)
回答1:

你在代码里,在Settings上按右键,转到定义,会进入Settings的类代码定义,你给Settings这个类,添加你需要的属性,比如:public string xxx;

那么你就可以用 Properties.Settings.Default.xxx;

你在这个类里可以无限定义若干个属性

回答2:

楼主你好
从你的追问中我觉得你是不是想要实现保存用户的记录?即用户在退出程序前,在窗体里所做的动作都将保存起来,待下次重启程序后依然是上一次退出程序的状态。
比如你所说的"要求的效果是Form上有个按钮,如果不点击按钮,则Text永远为1如果点击了按钮,则Text变成hello,且下次打开就看见Hello"
如果是这种功能的话,我建议你采用两种方法实现:
第1种,用API函数实现
第2种,用IsolatedStorageFile类实现(这种是出自安全角度考虑的,我目前的项目其中有一个功能就采用了这种技术)

回答3:

写个类封装一下:

public class SettingsWapper : DynamicObject
    {

        public SettingsWapper()
        {
           
        }
        public override bool TryGetMember(GetMemberBinder binder, out object result)
        {
            string key = binder.Name;
            if (Properties.Settings.Default.Properties[key] != null)
            {
                result = Properties.Settings.Default.Properties[key].DefaultValue;
            }
            else
            {
                result = null;
            }
            return true;
        }
        public override bool TrySetMember(SetMemberBinder binder, object value)
        {
            string key = binder.Name;
            if (Properties.Settings.Default.Properties[key] == null)
            {
                var property = new SettingsProperty(key);
                property.DefaultValue = value;
                Settings.Default.Properties.Add(property);
                Properties.Settings.Default.Save();
            }
            else
            {
                Properties.Settings.Default.Properties[key].DefaultValue = value;
            }
            return true;
        }
    }


用的时候:

static void Main(string[] args)
        {
            dynamic sw = new SettingsWapper();
            sw.test = "1"; //sw.xxx  xxx作为settings的key 有则更新无则添加
            Console.WriteLine(sw.test);
            sw.test = "2";
            Console.WriteLine(sw.test);
            Console.Read();
        }

回答4:

看过你对于其他回答者的追问之后,我不禁想问一下您这位“高”兄,您自己认可您自己的想法吗?您认可您自己的好奇心吗?对于您关注的代码“冗余”问题,我无权干涩,但是我想好意的提醒您一句,如果您过多的关注代码的“冗余”而减少了对于应用程序的功能优化,应用程序的外观美化,那么即使您删除了再多的“冗余”代码,那么应用程序,该慢的还是慢,该丑的还是丑;而对于好奇心来说,我也是无休止的好奇探索,但是最后经验告诉我,无意义的好奇只会浪费你优化及美化应用程序的时间及能力。

那么接下来我更想告诉你的是,不是任何更简洁的代码都对应用程序有更多的优势,有时候简介的代码不能共用,那么将导致你不能写进公共方法中或公共类中供其他地方调用使用,这样,你的应用程序将会把一句简洁的代码,进行成千上万的复制粘贴,对于后期,也更不利于维护,修改一处代码将导致整个程序无法运行,并进行了后期的成千上万的修改。

回答5:

自己 写个xml文件记录下...就是 几个字段罢了 使用linq to xml 可以快速 创建 xml 和修改xml 文件.