我有一个包含DataGridView的WinForm,其中包含一个组中的成员列表。该表单包含用于添加新成员和更改当前成员角色的功能(bindingNavigator)。我希望能够对成员进行排序,并通过在混合中引入 SortedBindingList 来实现这一点。然而,这有一个令人遗憾的效果,即拒绝我向团队添加新成员的能力。我得到以下异常:
发生了System.InvalidOperationException
Message =“无法将项目添加到只读或固定大小的列表中。”
我理解错误,但有什么方法可以解决这个问题,还是我必须找到其他方法对列表进行排序?
答案 0 :(得分:4)
我使用Binding List View获得了很多运气。只需将对象保存在Generic列表中,然后像这样设置DataSource:
public void BindGenericList<T>(List<T> list)
{
DataSource = new BindingListView<T>(list);
}
将实际对象从列表中取出非常简单:
public void GetObjectFromRow<T>(int rowIndex)
{
BindingListView<T> bindingListView = DataSource as BindingListView<T>;
return (null != bindingListView) ? bindingListView[rowIndex].Object : default(T);
}
使用BLV进行排序实际上是faster than using a DataView。