强大的PropertyGrid

时间:2022-12-29 16:38:00

PropertyGrid, 做工具一定要用这东西.....

把要编辑的对象看成类的话, 全部要编辑的属性就是成员

嗯嗯, 近期看了几眼Ogitor, 它对于PropertyGrid的使用就非常不错

全部要编辑的对象(灯光, 模型, 粒子等等)都有一个共同的基类, 每当选中一个可编辑对象时, 右边的属性框里就显示出当前对象的属性...(公司那个编辑器要多土就有多土-_-)

虽然Ribbon界面看起来非常酷, 我还是对MFC提不起兴趣来...

.net里的PropertyGrid更方便, 一点一点来:

属性自己主动绑定:

ref class Human
{
public:
Human()
{
this->Name = "(None)";
this->Age = 0;
this->IsMale = false;
}

property String^ Name;
property int Age;
property bool IsMale;
};

仅仅须要一句

this->propertyGrid1->SelectedObject = gcnew Human();

它就能自己主动识别出Human类中的property, 而且自己主动关联到PropertyGrid中:

强大的PropertyGrid

对属性进行分类并加凝视:

ref class Human
{
public:
Human()
{
this->Name = "(None)";
this->Age = 0;
this->IsMale = false;
this->SkinColor = Color::Yellow;
}

[CategoryAttribute("常规"), DescriptionAttribute("名字")]
property String^ Name;
[CategoryAttribute("常规"), DescriptionAttribute("年龄")]
property int Age;
[CategoryAttribute("外观"), DescriptionAttribute("性别")]
property bool IsMale;
[CategoryAttribute("外观"), DescriptionAttribute("肤色")]
property Color SkinColor;
};

强大的PropertyGrid

太爽啦~颜色自己就能识别........

弄个Image类型竟然还能自己选择文件...NB啊

强大的PropertyGrid

除了基本类型之外, Font, Size, Color等复杂类型也能够支持, 那么自己定义类型呢?

假设仅仅是像上面那样放上的话, 仅仅会得到个灰色不可编辑的东西~

强大的PropertyGrid

要想让PropertyGrid能够展开Vector3属性, 指定一下TypeConverter就能够了:

[TypeConverterAttribute(ExpandableObjectConverter::typeid)]
ref struct Vector3
{
property float X;
property float Y;
property float Z;

virtual String^ ToString() override
{
return String::Format("({0}, {1}, {2})", this->X, this->Y, this->Z);
}
};

强大的PropertyGrid

对于枚举类型, PropertyGrid会自己主动显示成下拉框. 把性别改成枚举看看:

enum struct SexType
{
Male,
Female
};

强大的PropertyGrid

另外, 还能够弹出自己定义的编辑界面, 比方随时间变化的曲线啦(经经常使用来做效果...)

这个, 临时没需求, 不实现了, 有兴趣的參考:Getting the Most Out of the .NET Framework PropertyGrid Control

强大的PropertyGrid的更多相关文章

  1. 一些VR延迟优化方法

    http://m.blog.csdn.net/article/details?id=50667507 VR中的”延迟”, 特指”Motion-To-Photon Latency”, 指的是从用户运动开 ...

  2. 一款开源且功能强大的C#甘特图控件.NET Winforms Gantt Chart Control

    甘特图在项目管理中非常重要,甘特图的思想比较简单,即以图示的方式通过活动列表和时间刻度形象地表示出任何特定项目的活动顺序与持续时间.它直观地表明任务计划在什么时候进行,及实际进展与计划要求的对比.管理 ...

  3. C# WinForm PropertyGrid用法

    关于C# PropertyGrid的用法没有找到,找到一个C++的用法.模仿着使用了一下,感觉挺不错,分享一下.基本用法:拖个PropertyGrid,绑定一个属性类就行了. 大气象 Code hig ...

  4. PropertyGrid自定义控件

    PropertyGrid是一个很强大的控件,使用该控件做属性设置面板的一个好处就是你只需要专注于代码而无需关注UI的呈现,PropertyGrid会默认根据变量类型选择合适的控件显示.但是这也带来了一 ...

  5. Postman - 功能强大的 API 接口请求调试和管理工具

    Postman 是一款功能强大的的 Chrome 应用,可以便捷的调试接口.前端开发人员在开发或者调试 Web 程序的时候是需要一些方法来跟踪网页请求的,用户可以使用一些网络的监视工具比如著名的 Fi ...

  6. 纯JS打造比QQ空间更强大的图片浏览器-支持拖拽、缩放、过滤、缩略图等

    在线演示地址(打开网页后,点击商家图册): http://www.sport7.cn/cc/jiangnan/football5.html 先看一看效果图: 该图片浏览器实现的功能如下: 1. 鼠标滚 ...

  7. 你从未知道如此强大的ASP.NET MVC DefaultModelBinder

    看到很多ASP.NET MVC项目还在从request.querystring或者formContext里面获取数据,这实在是非常落后的做法.也有的项目建了大量的自定义的modelbinder,以为很 ...

  8. 虚拟机体验之 VirtualBox 篇 —— 性能强大的经典架构

    前两篇体验了 QEMU 和经过 KVM 加速的 QEMU,并体验了第三方虚拟机管理工具 virt-manager,让我们见识了开源社区的强大和开源虚拟机软件的高质量和高性能.这一篇,我来剖析一下 Vi ...

  9. PropertyGrid控件由浅入深(二):基础用法

    目录 PropertyGrid控件由浅入深(一):文章大纲 PropertyGrid控件由浅入深(二):基础用法 控件的外观构成 控件的外观构成如下图所示: PropertyGrid控件包含以下几个要 ...

随机推荐

  1. sqlserver 导出数据字典

    -- 数据字典 SELECT ( then d.name else '' end)表名, a.colorder 字段序号, a.name 字段名, ( then '√'else '' end) 标识, ...

  2. C++ 面向对象的三个特点--多态性(一)

    C++的多态性定义 所谓多态性就是不同对象收到相同的消息产生不同的动作.通俗的说,多态性是指一个名字定义不同的函数,这些函数执行不同但又类似的操作,即用同样的接口访问功能不同的函数,从而实现“一个接口 ...

  3. JavaSE复习_1 Java的基本格式和运算符

    △.代表在当前目录.classpath能在任何路径下访问类文件. △单行注释可以嵌套,多行注释不能嵌套 △java中的标识符只能有数字,字母,$和_,其他的符号都是错误的,不合法的.其中数字不能是开头 ...

  4. 常见Java基础知识(较长)

    1.抽象:  抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽象包括两个方面,一是过程抽象, ...

  5. python 网络爬虫与信息提取 学习笔记day4

    正则表达式简介: 简洁表示一组字符串的特征或者模式,在文本处理中十分常用,主要应用于字符串匹配中 1.  通用的字符串表达框架 2.  简洁表达一组字符串的表达式 3.  针对字符串表达简洁和特征思想 ...

  6. lvs+keepalive实现双主模式(采用DR),同时实现TCP和UDP检测实现非web端的负载均衡,同时实现跨网段的通讯

    因为公司领导需要,需要把lvs备机也使用上,故! 使用双主,相互是主的同时也相互是备机.本人用nat测试发现RS无法实现负载均衡,故采用DR模式来实现非web端的负载均衡 lvs1: DIP 10.6 ...

  7. Django | 模型类变更后生成迁移文件,报错:You are trying to add a non-nullable field 'BookName' to BookInfo without a default....

    报错: You are trying to add a non-nullable field 'BookName' to BookInfo without a default; we can't do ...

  8. 设计模式-行为型模式,python访问者模式

    访问者模式 在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法.通过这种方式,元素的执行算法可以随着访问者改变而改变.这种类型的设计模式属于行为型模式. ...

  9. IntelliJ IDEA maven库下载依赖包速度慢的问题

    Reference: https://blog.csdn.net/qq1501340219/article/details/54638158 在pom.xml中添加maven 依赖包时,我就发现不管是 ...

  10. NO--13微信小程序,左右联动

    写在前面: 从2016年张小龙发布微信小程序这种新的形态,到2017年小程序的不温不火,再到今年小程序的大爆发,从一度刷爆朋友圈的‘头脑王者’,再到春节聚会坐在一起的火爆小游戏“跳一跳",都 ...