PropertyGrid类别排序
PropertyGrid排序http://greatverve.cnblogs.com/archive/2012/02/08/propergrid-order.html
这里没有解决类别排序的问题,所以到csdn提问了,结果半天没人回复,就忘了。
今天偶尔看到有人回复了,并且解决了类别排序的问题,真是太感谢了。现分享给大家。
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using OrderedPropertyGrid;
using System.Reflection;
namespace WinToXml
{
public partial class Form11 : Form
{
public Form11()
{
InitializeComponent(); propertyGrid1.SelectedObjectsChanged += new EventHandler(propertyGrid1_SelectedObjectsChanged);
propertyGrid1.SelectedObject = new Person();
}
void propertyGrid1_SelectedObjectsChanged(object sender, EventArgs e)
{
propertyGrid1.Tag = propertyGrid1.PropertySort;
propertyGrid1.PropertySort = PropertySort.CategorizedAlphabetical;
propertyGrid1.Paint += new PaintEventHandler(propertyGrid1_Paint);
}
void propertyGrid1_Paint(object sender, PaintEventArgs e)
{
var categorysinfo = propertyGrid1.SelectedObject.GetType().GetField("categorys", BindingFlags.NonPublic | BindingFlags.Instance);
if (categorysinfo != null)
{
var categorys = categorysinfo.GetValue(propertyGrid1.SelectedObject) as List<String>;
propertyGrid1.CollapseAllGridItems();
GridItemCollection currentPropEntries = propertyGrid1.GetType().GetField("currentPropEntries", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(propertyGrid1) as GridItemCollection;
var newarray = currentPropEntries.Cast<GridItem>().OrderBy((t) => categorys.IndexOf(t.Label)).ToArray();
currentPropEntries.GetType().GetField("entries", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(currentPropEntries, newarray);
propertyGrid1.ExpandAllGridItems();
propertyGrid1.PropertySort = (PropertySort)propertyGrid1.Tag;
}
propertyGrid1.Paint -= new PaintEventHandler(propertyGrid1_Paint);
}
[TypeConverter(typeof(PropertySorter))]
[DefaultProperty("Name")]
public class Person
{
private List<string> categorys = new List<string>() { "B", "A", "C" };//排序
private string _name = "Bob";
private string _name1 = "Bob1";
private DateTime _birthday = new DateTime(1975, 1, 1);
[Category("A"), PropertyOrder(10)]
public string Name
{
get { return _name; }
set { _name = value; }
}
[Category("A"), PropertyOrder(9)]
public string Name1
{
get { return _name1; }
set { _name1 = value; }
}
[Category("B"), PropertyOrder(11)]
public DateTime Birthday
{
get { return _birthday; }
set { _birthday = value; }
}
[Category("C"), PropertyOrder(12)]
public int Age
{
get
{
TimeSpan age = DateTime.Now - _birthday;
return (int)age.TotalDays / 365;
}
}
}
}
}
url:http://greatverve.cnblogs.com/archive/2012/02/20/propergrid-category-order.html
参考:http://topic.csdn.net/u/20120208/13/24948256-e0f4-4e64-9c3c-095dc20f7ccf.html
PropertyGrid类别排序相关推荐
- PropertyGrid控件 分类(Category)及属性(Property)排序
最近在做表单设计器,设计器上的控件都是我们自己封装的,但每个属性类别里的属性是按照属性的拼音排序的,现在想按照PropertyIndex标识进行排序(PropertyIndex的后三位是用来标识编辑器 ...
- C# PropertyGrid 简单使用
目录 一. 导入数据 二. PropertyGrid 的简单属性配置 三. 设置字段属性 四. 字段的下拉框 五. 多级展开 六. 显示内容的排序 6.1 属性排序 6.1.1 自定义排序 6.1.2 ...
- 创建自定义排序用户界面
简介 显示大量已经按类别(不是很多)排序的数据但没有类别分界线,用户很难找到所需要的类别.例如,数据库中只有9个类别(8个不同的类别和1个null),共81种产品.现在用一个GridView列出所有产 ...
- Winform中DataGridView绑定IList数据源后的排序
首先,实现ICompare接口 public class ObjectPropertyCompare<T> : IComparer<T> { private PropertyD ...
- 算法笔记--八个常见排序算法总结
一. 分类描述 1. 插入排序 直接插入排序:算法简单,稳定,适用于数据量小的情况 希尔排序:直接插入排序的改进版,不稳定,对于待排序序列的不同情况效率相近 2. 交换排序 冒泡排序:算法简单,稳定, ...
- 数据结构-常用的排序算法
总第123篇 好久不见哈,我终于又更新了,惊不惊喜,意不意外,哈哈哈哈.等之后会专门写一篇文章给大家汇报汇报我最近在忙什么呢,今天这篇还是接着之前的数据结构系列继续,主要讲讲数据结构里面常用的几种排序 ...
- 各种排序算法的时间复杂度
时间复杂度 当我们评价一个算法的时间性能时,主要标准就是算法的渐近时间复杂度,在算法分析时,经常是将渐近时间复杂度T(n)=O(f(n))简称为时间复杂度,其中的f(n)一般是算法中频度最大的语句频度 ...
- 可能存在无限递归_无限分类递归+排序解剖
首先我们先了解一下递归函数: 递归函数在语言学习的时候会单独拿出来学习,因为它非常常用,本质上来讲递归函数就是调用自己的函数. 举个例子: test函数里面又再调用了自身,这就是俗称的递归函数!递归函 ...
- 排序算法的时间与空间复杂度分析
时间复杂度 时间复杂度是同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率.算法分析的目的在于选择合适算法和改进算法. 计算机科学中,算法的时间复杂度是一个函数,它定性描述了该算 ...
- 八大排序算法比较及各自的特点
一.总体比较 类别 排序算法 时间复杂度 空间复杂度 稳定性 平均情况 最好情况 最坏情况 辅助存储 插入排序 直接插入 稳定 希尔(shell)排序 不稳定 选择排序 直接选择 不稳定 堆排序 不稳 ...
最新文章
- Aizu 0525 Osenbei(状压+贪心)
- idea打断点启动项目后debug红点内没有√,导致无法调试
- 挑战程序设计竞赛_实力爆棚!2019年,华中科技大学拿下亚洲区竞赛金牌4枚!...
- 51单片机——DS18B20
- 03.结构化机器学习项目 W2.机器学习策略(2)
- 走进英特尔中国研究院探索创新日:发布最新科研成果与创新策略
- php如何将mysql数据库中的admin字段赋值给session_转php中使用session_set_save_handler()函数把session保存到MySQL数据库实例...
- 双11小米手机、AIoT销售成绩公布,雷军笑了
- 操作系统和语言的关系(转载)
- 解决办法:dpkg: 错误: 无法打开软件包的 info 文件 /var/lib/dpkg/available 以便读取: 没有那个文件或目录
- 获取HG526超级密码
- 中职计算机应用基础表格制作说课稿,表格制作的说课稿
- Unity 多点触控 禁用与启用
- 元编程: is_floating_point<Tp>
- 一台微型计算机字长为4个字节,若一台计算机的字长为4个字节,则表明该计算机()。...
- rsyslog+elk 网络设备日志收集及钉钉报警
- 阿里云服务器SSL不可用
- JS事件详解和js事件委托
- delphi(XE2)实现图片异形窗体,支持摆放控件
- 关于android 在黑屏情况下wifi下载速度慢的问题的解决。