winform 怎么忽略 BindingList中元素的某个属性
时间: 2024-10-10 15:15:27 浏览: 89
C# Winform中英文切换的思路及源码
5星 · 资源好评率100%
在Windows Forms中,如果你想要在`BindingList<T>`中忽略某个属性并避免它显示在数据绑定控件(如DataGridView、ListView等)上,你可以通过定制`ICollectionView`的行为来实现这一点。`BindingList`实际上是依赖于`ICollectionView`进行数据展示的。
以下是一个示例步骤:
1. 创建一个自定义的`ICollectionView`子类,例如`FilteredCollectionView`,并覆盖你需要忽略的属性的`GetPropertyDescription()`方法:
```csharp
public class FilteredCollectionView : BindingList<T>
{
protected override PropertyDescriptor GetPropertyDescriptor(string propertyName)
{
if (propertyName == "你要忽略的属性名")
return null;
// 如果属性名不在忽略列表中,则返回默认的PropertyDescriptor
return base.GetPropertyDescriptor(propertyName);
}
}
```
这里,将"你要忽略的属性名"替换为你实际需要忽略的属性名。
2. 在`BindingSource`中实例化这个自定义的`ICollectionView`:
```csharp
FilteredCollectionView filteredList = new FilteredCollectionView(listOfYourItems);
yourDataSource.DataSource = filteredList;
```
`listOfYourItems`是你之前使用的`BindingList<T>`实例。
现在,该属性不会出现在绑定控件的显示列表中了。如果需要改变忽略的属性,只需修改自定义`ICollectionView`的`GetPropertyDescription()`方法即可。
阅读全文