c# 怎么设置全部界面的控件的属性 20
如,界面上添加一个treeview,这里显示一些内容,当点击属的某一项的时候,出现另外一个树,该treeview显示的是该项目所有的窗体,窗体下面是所有的控件(类似于Ne...
如,界面上添加一个treeview,这里显示一些内容,当点击属的某一项的时候,出现另外一个树,该treeview显示的是该项目所有的窗体,窗体下面是所有的控件(类似于Net Reflector,不过没那么复杂),接下来是最重要的一步,是显示这些窗体或者控件所有属性,这些属性如果改变,则记忆(关键这一步怎么实现?),在这个界面打开的时候加载这些记忆。这该怎么实现?
展开
2个回答
展开全部
可以把属性保存到文件里。
在修改窗体或控件属性的时候,将修改后的属性保存到文件中,可以用xml等格式标记多个控件的某些属性。在界面打开的时候再读这个配置文件。
文件可以保存到当前程序的目录,或者用系统环境变量保存到appdata、文档等目录
在修改窗体或控件属性的时候,将修改后的属性保存到文件中,可以用xml等格式标记多个控件的某些属性。在界面打开的时候再读这个配置文件。
文件可以保存到当前程序的目录,或者用系统环境变量保存到appdata、文档等目录
追问
就算保存到配置,我加载窗体的时候怎么匹配这些属性呢?不会告诉我一条一条的写吧,那会累死
追答
可以通过反射去遍历窗体或属性。恢复属性我突然想到可以通过比对窗体名和属性名的方式来还原。
下面是获取属性用的,新电脑没装VS,网上找了个代码,你看一下:
namespace WeiXinApi.CommonCS
{ public class ForeachClass
{
/// <summary>
/// C#反射遍历对象属性
/// </summary>
/// <typeparam name="T">对象类型</typeparam>
/// <param name="model">对象</param>
public static void ForeachClassProperties<T>(T model)
{
Type t = model.GetType();
PropertyInfo[] PropertyList = t.GetProperties();
foreach (PropertyInfo item in PropertyList)
{
string name = item.Name;
object value = item.GetValue(model, null);
}
}
}
}
展开全部
直接修改控件的属性可以用PropertyGrid 控件;这个控件就是微软设计器的属性窗口
怎么使用在给你的官方链接下面有
效果如图:
保存修改的属性这个功能很不好做
从内存中把一个对象(控件)保存下来叫序列化
如果你想把所有的控件都序列化下来,这个难度很大,因为控件有很多种,你必须为每一种控件设置序列化/反序列化的兼容代码,而且控件通常是和其它控件有关联(比如父、子级关系,你如果处理不好这种关系,那就无法运行)
我看到有人做过相似的功能,你可以参考一下
所以我的建议是你只为少数、指定类型的指定属性做序列化;然后在加载对应控件时赋值对应属性;而不是做一个大而全的加载所有类型、所有控件的通用功能
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询