J'ai un DataGridView
et un BindingSource bs
rempli bs.DataSource = list;
où list
est un BindingList<Item>
.CRUD sur BindingSource dans Winforms
Tout ce que je veux, c'est que chaque Item
ait été modifié et que chaque élément supprimé soit notifié qu'il a été supprimé. Ou à la place, j'aimerais avoir accès aux éléments modifiés, nouveaux et supprimés après que l'utilisateur a modifié la grille et appuyé sur le bouton.
Modifier:
public abstract class Item : INotifyPropertyChanged { .......
public Item()
{
Id = IdCounter++;
Pairs = new HashSet<int>();
State = ItemState.NEW;
Name = "#noname";
Note = "";
PropertyChanged += new PropertyChangedEventHandler(Item_PropertyChanged);
}
void Item_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
SetChanged();
}
/* nastaví příznak, že se něco změnilo - to následně vyvolá UPDATE (při použití SQL úložiště) */
public void SetChanged()
{
State = ItemState.CHANGED;
}
Lorsque l'élément est modifié, cet événement n'est pas déclenché. J'ai besoin de détecter les changements d'attributs des éléments de la liste. – Cartesius00
Quand vous voulez éditer, voulez-vous dire qu'ils changent la valeur dans le DataGridView et puis déconcentrent l'élément actuel, il ne se déclenche pas? Vos éléments de liste devront implémenter INotifyPropertyChanged pour que cela fonctionne. – SwDevMan81
Oui! C'est tout, mais j'ai implémenté cette interface mais rien ne se déclenche, :-(En d'autres termes, mon objet implémente 'INotifyPropertyChanged' mais l'événement PropertyChanged n'est pas déclenché sur" focus-lost ". – Cartesius00