none
L'ajout automatique de row à un datagridview ne fonctionnent plus en utilisant l'evenement CurrentCellDirtyStateChanged dans une classe héritée RRS feed

  • Question

  • Bonjour,

    j'ai trouvé sur le forum la possibilité, dans un Datagridview, de déclencher l’événement CellValueChanged à chaque saisie du clavier et non une seule fois à la validation par entrée de la cellule. Je trouve dommage que cet événement ne soit pas géré de base comme pour les zones de textes. Quoi qu'il en soit, je comptais l'utiliser dans tous les Datagridview de mon programme et donc faire une classe héritée de Datagridview implémentant cet événement

    le code récupéré est celui-ci :

     

     Private Sub myDataGridView1_CurrentCellDirtyStateChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles myDataGridView1.CurrentCellDirtyStateChanged
      If myDataGridView1.IsCurrentCellDirty Then
       myDataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit)
      End If
     End Sub
    
    

     

    le code que j'utilise dans ma classe hérité de Datagridview est celui-ci :

     

    Public Class DgView
     Inherits DataGridView
     Protected Overrides Sub OnCurrentCellDirtyStateChanged(ByVal e As System.EventArgs) If Me.IsCurrentCellDirty Then Me.CommitEdit(DataGridViewDataErrorContexts.Commit) End If MyBase.OnCurrentCellDirtyStateChanged(e) End Sub
    End Class

    Lorsque j'utilise ma classe héritée DgView, le résultat attendu est obtenu à savoir que l'evenement CellValueChanged est appelé à chaque frappe du clavier lorsque je suis en mode édition sur une cellule.

    Par contre, je me suis aperçu que lorsque que le curseur est sur la dernière row du datagridview et je commence à taper quelque chose dans la cellule, aucune ligne n'est créee automatiquement en dessous. Normalement dans un datagridview classique (et que AllowUserToAddRows=true), une ligne se crée automatiquement dès que l'on saisie quelque chose dans la dernière ligne de la grille.

    Je voulais donc savoir comment corriger ce problème (je ne sais pas à quel evenement correspond cet ajout automatique de ligne dans un datagridview) ou tout du moins tenter de simuler cet événement si je il est désactivé par la classe que j'ai crée.

    Merci d'avance de votre aide.

     


    lundi 16 mai 2011 13:49

Réponses

Toutes les réponses