DatagridView + Controles simples Databindés. Comment désactiver les évènements l

BasicZx81 Messages postés 140 Date d'inscription samedi 5 mars 2011 Statut Membre Dernière intervention 13 août 2013 - 8 mars 2012 à 17:36
BasicZx81 Messages postés 140 Date d'inscription samedi 5 mars 2011 Statut Membre Dernière intervention 13 août 2013 - 11 mars 2012 à 09:16
Bonjour à tous,
j'ai un problème lié au Databinding que je n'arrive pas vraiment pas à résoudre, c'est pourquoi je fait appel à vous, espérant qu'une solution existe.
J'ai un Datagridview ainsi qu'une dizaine de contrôles simples, tous liés à une source de données (BindingSource).
Le problème est que lorsque l'utilisateur change de ligne du DataGridView, cela exécute les procédures attachées aux évènements de tous les contrôles simples (du fait des changements de valeurs en passant d'une ligne à une autre) hors j'aimerais pouvoir désactiver à ce moment précis tous ces évènements à l’exception de l’évènement "changement de ligne du dataGridView". En effet je dois pouvoir utiliser un évènement de changement de ligne dans lequel j'ai besoin d'exécuter du code pour traiter la ligne sur laquelle l'utilisateur clique et seulement après je dois réactiver les évènements attachés aux contrôles simples.

Pour cela j'ai crée une procédure destinée a activer/désactiver l'ensemble des évènements attachés aux contrôles simple du type :

   Public Sub ActiveControlesHandler(ByVal State As Boolean)
               If State True And ControleHanddlerIsActive False Then
            AddHandler ComboBox1.SelectedIndexChanged, AddressOf EventFromControleUser
            AddHandler CheckBox1.CheckedChanged, AddressOf EventFromControleUser
            ' ..............etc
            ControleHanddlerIsActive = True
        ElseIf State False And ControleHanddlerIsActive True Then
            RemoveHandler ComboBox1.SelectedIndexChanged, AddressOf EventFromControleUser
            RemoveHandler CheckBox1.CheckedChanged, AddressOf EventFromControleUser
            ' ..............etc
            ControleHanddlerIsActive = False
        End If
    End Sub

Le problème est de trouver le moment opportun pour exécuter cette procédure. j'ai essayé plusieurs évènements du DataGridView ou du Bindingsource et tous s’exécute trop tard, c'est à dire que ce sont toujours les évènements des contrôles simples qui s’exécute en premier avant que j'ai le temps de les désactiver.

Je pensais que les développeurs du Framwork aurais bien fait les choses en offrant des des fonctions simple pour désactiver ces évènements et je m’éttonne que cela soit un vrai casse-tête pour faire cela dans un environnement DataBindé. Et avec plus d'une dizaine de contrôles, ce sont 20 ou 30 évènements qui se déclenche en cascade je vous laisse imaginer le complexité du débogage et la maintenance du code si on ne peut pas les désactiver.

Merci de me venir en aide si vous pouvez, je n'ai plus que ce problème à régler pour finir mon appli et je galère vraiment.

1 réponse

BasicZx81 Messages postés 140 Date d'inscription samedi 5 mars 2011 Statut Membre Dernière intervention 13 août 2013
11 mars 2012 à 09:16
Rebonjour,
Visiblement il y a un truc qui m'échappe avec le Databinding et j'ai l'impression de ne pas être le seul compte tenu de l'absence de réponses...
Ce n'ai pas faute d'avoir cherché partout sur Internet, les Tutorial sont inexistants ou bien très insuffisant.
Si quelqu'un à un bon livre à me conseiller ça serait sympa de sa part.
La ou je bloque le plus c'est sur comment intercepter les modifications et la validation du formulaire.
En vous remerciant par avance.
0
Rejoignez-nous