我有一个绑定列表(T),我显示在DataGrid。我正在观看ListChanged事件并执行不同的操作时,会触发ListChanged事件。在BindingList中导致ListChangedType.ItemMoved ListChange事件的原因<T>?
我在检查ListChangeType事件的参数,以检查列表如何更改,然后相应地作出响应。但是,我注意到有一个ListChanged事件类型ItemMoved。
我有“上移”和“下移”的按钮来上下移动项目。但这些实际上是删除选定的项目,然后将它重新插入到更高或更低的位置。
但是,我没有看到任何方法BindingList(T)看起来像它会移动列表中的项目。所以我错过了什么,或者是没有办法移动一个BindingList中的项目,这也会引发一个ItemMoved类型的ListChanged事件?
void FloorCollection_ListChanged(object sender, ListChangedEventArgs e)
{
if (e.ListChangedType == ListChangedType.ItemAdded)
{
//DO STUFF
}
else if (e.ListChangedType == ListChangedType.ItemDeleted)
{
//DO STUFF
}
else if (e.ListChangedType == ListChangedType.ItemMoved)
{
//HOW DO I GET THIS CODE TO RUN?
}
else if (e.ListChangedType == ListChangedType.ItemChanged)
{
//DO STUFF
}
}
要点看起来正确,只是想我应该指出,将一个项目移动到较低的索引将无法使用此代码 - this.Remove(item)将会移动索引。至少你一次插入你的项目,最坏的情况是,你试图插入到列表的最后。 – Yoopergeek 2009-10-30 19:46:57