J'ai une BindingList (T) que j'affiche dans un DataGrid. Je surveille les événements ListChanged et effectue différentes actions lorsque l'événement ListChanged est appelé.Qu'est-ce qui provoque un événement ListChanged ListChangedType.ItemMoved dans un BindingList <T>?
Je vérifie l'argument ListChangeType de l'événement pour vérifier comment la liste a été modifiée, puis répondre en conséquence. Cependant, j'ai remarqué qu'il y a un ListChanged type d'événement ItemMoved.
J'ai des boutons pour "Monter" et "Déplacer vers le bas" pour déplacer des éléments de haut en bas de la liste. Mais ils suppriment en fait l'élément sélectionné, puis le réinsèrent dans une position plus haute ou plus basse.
Cependant, je ne vois aucune méthode de BindingList (T) qui semble déplacer un élément de la liste. Est-ce qu'il me manque quelque chose ou est-ce qu'il n'y a aucun moyen de déplacer un élément dans une BindingList qui évoquerait aussi un événement ListChanged de type 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
}
}
Les points principaux semblent corrects, je pensais juste que le fait de déplacer un élément vers un index inférieur ne fonctionnerait pas avec ce code - le this.Remove (item) décalerait les index. À tout le moins, vous insérez votre article une seule fois, au pire, vous essayez d'insérer après la fin de la liste. – Yoopergeek