Bonjour,
J'utilise un dataGridVieW, pour afficher et modifier des données. Comme je dois controler la validité de la saisie ( données appartement à une certaine fourchette, saisie de référence existant dans une autre table, etc ), j'ai effectué un controle sur l'évenement CellLeave. J'arrive bien à mettre en évidence l'erreur de saisie, le probleme est que dans ce cas là, il faut replacer la celulle active sur la celulle quittée ( dataGrid.CurrentCel == xxxx ). Je tombe sur un bug insoluble, car l'évenement CellLeave est suivi de l'évenement CellEnter sur la celulle suivante, et entre temps j'ai assigné dataGrid.CurrentCell à la celulle qui vient d'etre quittée. Je reçois une erreur "Appel à une procedure réentrante". je comprends à peu prés ce qu'il se passe. Avant de faire exécuter dataGrid.CurrentCell = "retour à la celulle d'origine", il faudrait que l'évenement CellLeave soit entièrement traité, et que l'évenement CellEnter sur la celulle suivante soit lui aussi terminé. Comme je n'ai pas trouvé d'évenement CellFocus, je ne vois vraiment pas ou placer ma ligne de commande pour un retour à la celulle de départ. Sinon existe il un moyen de vider la file d'attente des évenements, pour supprimer l'éxécution du CellEnter ? Mais là comme solution ça me parait scabreux.
Merci pour le coup de main.
Partager