添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《 阿里云开发者社区用户服务协议 》和 《 阿里云开发者社区知识产权保护指引 》。如果您发现本社区中有涉嫌抄袭的内容,填写 侵权投诉表单 进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。 public ObjectPropertyCompare(PropertyDescriptor property, ListSortDirection direction) {
.property property;
.direction direction;
}

实现IComparer中方法 public Compare(T x, T y) {
object xValue x.GetType().GetProperty(property.Name).GetValue(x, object yValue y.GetType().GetProperty(property.Name).GetValue(y, returnValue;

(xValue IComparable) {
returnValue
((IComparable)xValue).CompareTo(yValue);
}
(xValue.Equals(yValue)) {
returnValue
{
returnValue
xValue.ToString().CompareTo(yValue.ToString());
}

(direction ListSortDirection.Ascending) {
return returnValue;
}
return returnValue ;
}
}
}

然后创建自定义的类,实现IBindingList接口,为方便起见,这里直接继承BindingList类

<summary> 自定义绑定列表类
</summary> <typeparam name="T"> 列表对象类型 </typeparam> public class BindingCollection : BindingList private isSorted;
private PropertyDescriptor sortProperty;
private ListSortDirection sortDirection;

<summary> </summary> public BindingCollection()
:
() {
}

<summary> </summary> <param name="list"> IList类型的列表对象 </param> public BindingCollection(IList list)
:
(list) {
}

<summary> 自定义排序操作
</summary> <param name="property"></param> <param name="direction"></param> protected override ApplySortCore(PropertyDescriptor property, ListSortDirection direction) {
List
items .Items (items ) {
ObjectPropertyCompare
ObjectPropertyCompare (property, direction);
items.Sort(pc);
isSorted
{
isSorted
false ;
}

sortProperty
property;
sortDirection
direction;

.OnListChanged( ListChangedEventArgs(ListChangedType.Reset, ));
}

<summary> 获取一个值,指示列表是否已排序
</summary> protected override IsSortedCore {
return isSorted;
}
}

<summary> 获取一个值,指示列表是否支持排序
</summary> protected override SupportsSortingCore {
return ;
}
}

<summary> 获取一个只,指定类别排序方向
</summary> protected override ListSortDirection SortDirectionCore {
return sortDirection;
}
}

<summary> 获取排序属性说明符
</summary> protected override PropertyDescriptor SortPropertyCore {
return sortProperty;
}
}

<summary> 移除默认实现的排序
</summary> protected override RemoveSortCore() {
isSorted
false .OnListChanged( ListChangedEventArgs(ListChangedType.Reset, ));
}

创建BindingCollection后即可直接应用:

原来的方式是:

I List< object > list = new List< object >();

dataGridView.DataSource = list;

现在只需更改最后一句为:

dataGridView.DataSource = new BindingCollection< object >(list);