强大的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
强大的PropertyGrid的更多相关文章
- 一些VR延迟优化方法
http://m.blog.csdn.net/article/details?id=50667507 VR中的”延迟”, 特指”Motion-To-Photon Latency”, 指的是从用户运动开 ...
- 一款开源且功能强大的C#甘特图控件.NET Winforms Gantt Chart Control
甘特图在项目管理中非常重要,甘特图的思想比较简单,即以图示的方式通过活动列表和时间刻度形象地表示出任何特定项目的活动顺序与持续时间.它直观地表明任务计划在什么时候进行,及实际进展与计划要求的对比.管理 ...
- C# WinForm PropertyGrid用法
关于C# PropertyGrid的用法没有找到,找到一个C++的用法.模仿着使用了一下,感觉挺不错,分享一下.基本用法:拖个PropertyGrid,绑定一个属性类就行了. 大气象 Code hig ...
- PropertyGrid自定义控件
PropertyGrid是一个很强大的控件,使用该控件做属性设置面板的一个好处就是你只需要专注于代码而无需关注UI的呈现,PropertyGrid会默认根据变量类型选择合适的控件显示.但是这也带来了一 ...
- Postman - 功能强大的 API 接口请求调试和管理工具
Postman 是一款功能强大的的 Chrome 应用,可以便捷的调试接口.前端开发人员在开发或者调试 Web 程序的时候是需要一些方法来跟踪网页请求的,用户可以使用一些网络的监视工具比如著名的 Fi ...
- 纯JS打造比QQ空间更强大的图片浏览器-支持拖拽、缩放、过滤、缩略图等
在线演示地址(打开网页后,点击商家图册): http://www.sport7.cn/cc/jiangnan/football5.html 先看一看效果图: 该图片浏览器实现的功能如下: 1. 鼠标滚 ...
- 你从未知道如此强大的ASP.NET MVC DefaultModelBinder
看到很多ASP.NET MVC项目还在从request.querystring或者formContext里面获取数据,这实在是非常落后的做法.也有的项目建了大量的自定义的modelbinder,以为很 ...
- 虚拟机体验之 VirtualBox 篇 —— 性能强大的经典架构
前两篇体验了 QEMU 和经过 KVM 加速的 QEMU,并体验了第三方虚拟机管理工具 virt-manager,让我们见识了开源社区的强大和开源虚拟机软件的高质量和高性能.这一篇,我来剖析一下 Vi ...
- PropertyGrid控件由浅入深(二):基础用法
目录 PropertyGrid控件由浅入深(一):文章大纲 PropertyGrid控件由浅入深(二):基础用法 控件的外观构成 控件的外观构成如下图所示: PropertyGrid控件包含以下几个要 ...
随机推荐
- 记一个手游app数据文件的破解
出于一些非常猥琐的须要,同一时候自己也想做一些新奇的尝试,周末用了大半天时间破解了某款手游的数据文件. 过程比我预想的要顺利,主要原因还是我们开发者的懈怠.咳咳. 步骤例如以下: 下载安装包,解压,发 ...
- D3D 练习小框架
自己练习D3D 程序搭的小框架,记录在这里,将来看到好回顾自己独自摸索的苦逼样子. #pragma once #pragma comment(lib,"d3d9.lib") #pr ...
- Multiplepack coming~^.^
多重背包: 基本思路: 先来看一个引例:有N种物品和一个容量为V的背包.第i种物品最多有n[i]件可用,每件费用是c[i],价值是w[i].求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量, ...
- centos6安装bt工具transmission
centos6 install transmission 1. 安装所需的组件: yum -y install gcc gcc-c++ m4 make automake libtool gettex ...
- POJ 2184 Cow Exhibition 01背包
题意就是给出n对数 每对xi, yi 的值范围是-1000到1000 然后让你从中取若干对 使得sum(x[k]+y[k]) 最大并且非负 且 sum(x[k]) >= 0 sum(y[k] ...
- 深入理解 JBoss 7/WildFly Standalone 模式启动过程
概述 JBoss 7/WildFly Standalone 模式启动过程大致例如以下: 启动脚本 standalone.sh 启动 JBoss Modules,JBoss Modules 启动 JBo ...
- JOHN W. TUKEY: HIS LIFE AND PROFESSIONAL CONTRIBUTIONS
DAVID R. BRILLINGER 写的关于John的一片纪念文章 JOHN W. TUKEY: HIS LIFE AND PROFESSIONAL CONTRIBUTIONS (The Ann ...
- AMR音频编码器概述及文件格式分析
全称Adaptive Multi-Rate,自适应多速率编码,主要用于移动设备的音频,压缩比比较大,但相对其他的压缩格式质量比较差,由于多用于人声,通话,效果还是很不错的. 一.分类 1. AMR: ...
- TCP、UDP数据包大小的限制(UDP数据包一次发送多大为好)——数据帧的物理特性决定的,每层都有一个自己的数据头,层层递减
1.概述 首先要看TCP/IP协议,涉及到四层:链路层,网络层,传输层,应用层. 其中以太网(Ethernet)的数据帧在链路层 IP包在网络层 TCP或UDP包在传输层 TCP或UDP中的数据(Da ...
- 忽然想到:QProcess的Read功能太强,如果有什么搞不定的,可以调用外部程序 good
这样就可以用其它语言来无限扩展它的功能了,比如golang,比如Delphi