J'ai une case à cocher winforms liée à une propriété d'une entité Entity Framework.La valeur de la zone de texte/case à cocher est incorrecte jusqu'à ce que la zone de texte/case à cocher soit validée
Ainsi, par exemple, j'ai bindingSource.DataSource = myDog
avec une case à cocher liée à la propriété IsSleeping
, de sorte que lorsque l'utilisateur vérifie la boîte, IsSleeping
devient vrai, et lorsque l'utilisateur désélectionne la boîte, IsSleeping
devient fausse.
Cela fonctionne très bien. Le problème est que la valeur de IsSleeping
n'est pas mise à jour tant que la case à cocher n'est pas validée, ce qui se produit uniquement lorsque le focus déplace de de la case à cocher vers autre chose. Ainsi, si je veux quelque chose à se produire lorsque la case est décochée:
private void IsSleepingCheckbox_CheckedChanged(object sender, EventArgs e)
{
OnDogPropertyChanged(myDog);
MyAnimalEntities.SaveChanges();
}
myDog.IsSleeping
sera toujours vrai, plus tard est soulevé Validated
de la case à cocher. Ainsi, quand pauvre myNaughtyKitty
(qui écoute l'événement DogPropertyChanged
) vient manger à myDog
plat de nourriture myDog
est en train de dormir, myDog
est vraiment juste se réveiller! Oh non!
Pire encore, MyAnimalEntities.SaveChanges()
ne voit pas les changements à myDog
encore, la valeur de IsSleeping
est jamais sauvé à la base de données. Déplacer l'.SaveChanges()
appel à IsSleepingCheckbox_Validated
ne résout pas ce problème, car si la case est cochée mais le formulaire est fermé sans jamais se déplacer loin de la case à cocher, la case à cocher n'est jamais validée et donc son état n'est jamais enregistré! J'imagine que cela doit être un problème assez commun avec la connexion de données et les cases à cocher/textboxes, et en effet j'ai trouvé une tonne de messages sur le sujet en ligne, mais personne ne semble jamais avoir une solution. Est-ce que quelqu'un a été en mesure de trouver une solution de contournement pour cela?
Tu as sauvé ma vie après des heures de recherche dans google. Merci. – superjugy