强大的PropertyGrid

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中:

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

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;
};

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

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

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

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

要想让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会自己主动显示成下拉框. 把性别改成枚举看看:

enum struct SexType
{
Male,
Female
};

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

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

时间: 2024-12-30 02:32:29

强大的PropertyGrid的相关文章

一些VR延迟优化方法

http://m.blog.csdn.net/article/details?id=50667507 VR中的”延迟”, 特指”Motion-To-Photon Latency”, 指的是从用户运动开始到相应画面显示到屏幕上所花的时间.  这中间经过了大概这么几个步骤: 传感器采集运动输入数据 采集到的数据进行过滤并通过线缆传输到主机 游戏引擎根据获取的输入数据更新逻辑和渲染视口 提交到驱动并由驱动发送到显卡进行渲染 把渲染的结果提交到屏幕, 像素进行颜色的切换 用户在屏幕上看到相应的画面 当然

C# WinForm PropertyGrid用法

关于C# PropertyGrid的用法没有找到,找到一个C++的用法.模仿着使用了一下,感觉挺不错,分享一下. 基本用法:拖个PropertyGrid,绑定一个属性类就行了. 大气象 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->using System; using System.Collections.Generic; using Syste

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

甘特图在项目管理中非常重要,甘特图的思想比较简单,即以图示的方式通过活动列表和时间刻度形象地表示出任何特定项目的活动顺序与持续时间.它直观地表明任务计划在什么时候进行,及实际进展与计划要求的对比.管理者由此可便利地弄清一项任务(项目)还剩下哪些工作要做,并可评估工作进度.甘特图可以显示几个部门.机器或设备的运行和闲置情况.这表示了该系统的有关工作负荷状况,这样可使管理人员了解何种调整是恰当的. 由于项目需要,在网上找了很久,经过大量的对比和评估,发现一款真正开源且功能强大的C#甘特图控件.NET

PropertyGrid自定义控件

PropertyGrid是一个很强大的控件,使用该控件做属性设置面板的一个好处就是你只需要专注于代码而无需关注UI的呈现,PropertyGrid会默认根据变量类型选择合适的控件显示.但是这也带来了一个问题,就是控件的使用变得不是特别灵活,主要表现在你无法根据你的需求很好的选择控件,比如当你需要用Slider控件来设置int型变量时,PropertyGrid默认的模板选择器是不支持的.网上找了许多资料基本都是介绍WinForm的实现方式,主要用到了IWindowFromService这个接口,并

12个强大的Web服务测试工具

在过去的几年中,web服务或API的普及和使用有所增加. web服务或API是程序或软件组件的集合,可以帮助应用程序进行交互或通过形成其他应用程序或服务器之间的连接执行一些进程/事务处理.基本上有两种类型的web服务——基于互联网协议,REST和SOAP推动数据和信息的通讯. 由于这些web服务暴露于网络并且分布于不同的网络,所以它们很容易受到风险和安全威胁,从而影响基于它们的进程.因此,web服务或API测试非常有必要,可以确保它们执行正确并正确地响应查询. 市场上有不少商业和开源的测试工具可

解决Ext4.2.3中propertyGrid修改后点击排序报错

Ext4.2.3中PropertyGrid修改后点击排序报错,具体错误信息如下: 一开始还怀疑是自己哪里配置错了,各种尝试结果还是一样.查遍百度和谷歌,无果,只有一篇帖子说是4.2.4修正了.还是自己动手吧,自己动手丰衣足食. 点开报错地方(如下图所示),原来是me.field.column没有定义. 然后继续找,找啊找啊找到Ext.grid.property.Grid的getCellEditor方法.此方法有参数column,可在方法体内,column就没有被用到过,于是就感觉问题出在这里.

汗蒸房中添加负离子粉有什么强大的功效

汗蒸房中添加负离子粉有什么强大的功效    宇拓牌负离子粉主要有以下作用:    1.宇拓牌负离子粉有利于血流速度变慢,延迟凝血时间,使人体中血含氧量增加,有利于血液氧分有效输送,进一步利用与吸收.  负离子粉对人体的呼吸系统的作用很明显:是因为负离子是通过呼吸道进入人体的,它可以有效提高人的肺活量. 在19世纪80年代试验经过,在玻璃面罩中吸入空气负离子30分钟,可使肺部吸收氧气量增加2%,而排出二氧化碳量可增加14.5%,因此负离子有改善和增强肺功能的作用.     2.宇拓牌负离子粉俗称长

强大的vim配置文件,让编程更随意

花了很长时间整理的,感觉用起来很方便,共享一下. 我的vim配置主要有以下优点: 1.按F5可以直接编译并执行C.C++.java代码以及执行shell脚本,按"F8"可进行C.C++代码的调试 2.自动插入文件头 ,新建C.C++源文件时自动插入表头:包括文件名.作者.联系方式.建立时间等,读者可根据需求自行更改 3.映射"Ctrl + A"为全选并复制快捷键,方便复制代码 4.按"F2"可以直接消除代码中的空行 5."F3"

如此强大的开源ETL工具竟然被我发现了

初识 Talend,感觉功能很强大,可以同步多种数据库,同时可以清洗.筛选.java代码处理数据.数据导入导出. Talend是一款针对数据集成工具市场的ETL(数据的提取Extract.传输Transform.载入Load)开源软件.Talend以它的技术和商业双重模式为ETL服务提供了一个全新的远景.它打破了传统的独有封闭服务,提供了一个针对所有规模公司,公开的.创新的.强大的.灵活的软件解决方案.最终,由于Talend的出现,数据整合方案不再是被大公司所独享. Talend可以帮助您节省大