c# 我用 propertyGrid控件改变了label控件的背景颜色,我想下次再打开此窗体时,就是设置后的背景颜色。

具体是这样:每点击一次按钮就产生一个label在窗体上,并且用propertyGrid控件改变label的各种属性(大小,位置,背景颜色等),由于我每点击按钮就有labe... 具体是这样:每点击一次按钮就产生一个label在窗体上,并且用 propertyGrid控件改变label的各种属性(大小,位置,背景颜色等),由于我每点击按钮就有label产生,所以会有不定数量的label,我分别设置了他们的属性后,我希望能把我添加的这些label和他们的属性保存下来,下次再运行程序的时候,就可以不用再设置了,请问这个要怎么保存这些信息呢? 展开
 我来答
熊欣彩iN
2012-04-11
知道答主
回答量:11
采纳率:0%
帮助的人:6.8万
展开全部
1.首先,你要明白的是,你要保存的内容和propertyGrid控件是没有关系的,propertyGrid 控件只是为了方便管理并设置对象的信息,它仅仅只负责设置而已,如果哪天有可能,说不定你会采取另外一种方式来设置这些label的属性的。
2,对于控件的背景,颜色等信息的本地持久化,你可以用ApplicationSettingBase类的功能来实现,一般情况下我们项目中property文件夹下面有一个Setting1.cs的文件,这个setting 就是从ApplicationSettingBase继承过来的,用于保存应用程序的一些设置信息,当然对于label的背景,字体,颜色,位置都是可以保存,但你这里多个label,所以得额外处理一下 。
3.对于要保存的label的那些属性,应该有一个labelinfo这样的类吧,用于描述label的一些信息,比如这个labelinfo就应该提供的属性有,位置,背景颜色,字体等,而且你这个类要做成可序列化的,或者提供一个typeconvertor类,可以将这个labelinfo的对象转换成字符串,并且可以从字符串转换回来。
4.这一步就需要从ApplicationSettingBase继承一个类,这个类提供一个属性,这个属性应该是LabelInfo的集合,因为你要保存的是多个label,而且label的个数也不知道,比如这里的属性就可能是这样的List<LabelInfo> LabelInfos{get;set;},get,set里面的实现你可以参考自动生成的setting1类里面的一些属性的保存和读取,这个LabelInfos的属性上面应该用UserScopedSetting 这个特性进行标示。
5,这时候你就可以用代码保存你的label的信息了,遍历面板上面的所有的label,然后对每一个label构造一个LabelInfo对象,将这个LabelInfo对象添加到一个List<LabelInfo> 类型的集合中,最后将这个集合赋给上一步你创建的对象的LabelInfos属性,最好调用ApplicationSettingBase的Save方法就将这些信息保存到本地了。
6,反序列化的过程相反,你从自定义的ApplicationSettingBase中取到LabelInfos属性,然后遍历这里面的每一个,重新构造一个label就行了。
更多追问追答
追问
可以留下您的联系方式吗?我想具体请教一下~~
追答
270076603
26779260
2012-04-10 · TA获得超过229个赞
知道答主
回答量:124
采纳率:0%
帮助的人:140万
展开全部
这个恐怕你要考虑保存到本地了,要么数据库或者xml配置文件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
完美又慎重的小喵1635
2012-04-10 · TA获得超过6.5万个赞
知道大有可为答主
回答量:3.6万
采纳率:0%
帮助的人:5291万
展开全部
你的问题我能帮你解决, 但是建议你还是去系统学习一下 百度搜索 “黑马.net全套视频” 我已经上传到网盘了。免费分享了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式