Tôi có một BindingList (T) mà tôi đang hiển thị trong một DataGrid. Tôi đang xem các sự kiện ListChanged và thực hiện các hành động khác nhau khi sự kiện ListChanged được gợi lên.Điều gì gây ra một sự kiện ListChangedType.ItemMoved ListChange trong một BindingList <T>?
Tôi đang kiểm tra đối số ListChangeType của sự kiện để kiểm tra xem danh sách đã được thay đổi như thế nào và sau đó trả lời tương ứng. Tuy nhiên, tôi nhận thấy rằng có ListChanged loại sự kiện ItemMoved.
Tôi có các nút để "Di chuyển lên" và "Di chuyển xuống" để di chuyển các mục lên và xuống danh sách. Nhưng đây thực sự là loại bỏ các mục đã chọn, và sau đó reinserting nó ở một vị trí cao hơn hoặc thấp hơn.
Tuy nhiên, tôi không thấy bất kỳ phương thức nào của BindingList (T) có vẻ như sẽ di chuyển một mục trong danh sách. Vì vậy, tôi thiếu một cái gì đó hoặc là không có cách nào chỉ để di chuyển một mục trong một BindingList mà cũng sẽ gợi lên một sự kiện ListChang loại ItemMoved?
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
}
}
Các điểm chính trông chính xác, chỉ nghĩ rằng tôi nên chỉ ra rằng việc di chuyển một mục đến chỉ mục thấp hơn sẽ không hoạt động với mã này - this.Remove (mục) sẽ thay đổi các chỉ mục. Ít nhất bạn chèn một mục của bạn một lần, lúc tồi tệ nhất, bạn cố gắng chèn vào cuối danh sách. – Yoopergeek