c# 怎么设置全部界面的控件的属性 20

如,界面上添加一个treeview,这里显示一些内容,当点击属的某一项的时候,出现另外一个树,该treeview显示的是该项目所有的窗体,窗体下面是所有的控件(类似于Ne... 如,界面上添加一个treeview,这里显示一些内容,当点击属的某一项的时候,出现另外一个树,该treeview显示的是该项目所有的窗体,窗体下面是所有的控件(类似于Net Reflector,不过没那么复杂),接下来是最重要的一步,是显示这些窗体或者控件所有属性,这些属性如果改变,则记忆(关键这一步怎么实现?),在这个界面打开的时候加载这些记忆。这该怎么实现? 展开
 我来答
duyi324
2018-02-01 · TA获得超过292个赞
知道小有建树答主
回答量:322
采纳率:70%
帮助的人:176万
展开全部
可以把属性保存到文件里。
在修改窗体或控件属性的时候,将修改后的属性保存到文件中,可以用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);
            }
        }
    }
}
我零0七
2018-02-01 · 热衷人生的有效性,关注自我
我零0七
采纳数:684 获赞数:11738

向TA提问 私信TA
展开全部

直接修改控件的属性可以用PropertyGrid 控件;这个控件就是微软设计器的属性窗口

怎么使用在给你的官方链接下面有

效果如图:

保存修改的属性这个功能很不好做

从内存中把一个对象(控件)保存下来叫序列化

如果你想把所有的控件都序列化下来,这个难度很大,因为控件有很多种,你必须为每一种控件设置序列化/反序列化的兼容代码,而且控件通常是和其它控件有关联(比如父、子级关系,你如果处理不好这种关系,那就无法运行)

我看到有人做过相似的功能,你可以参考一下

所以我的建议是你只为少数、指定类型的指定属性做序列化;然后在加载对应控件时赋值对应属性;而不是做一个大而全的加载所有类型、所有控件的通用功能

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式