IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[VB2005]datagridview : header rowindex ?


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut [VB2005]datagridview : header rowindex ?
    Bonjour à tous.

    Je suis devant un problème assez incongru.

    Je rencontre un souci dans l'évènement "CurrentCellChanged" d'un controle DataGridView. Il s'avère qu'il se déclanche lorsqu'on clique aussi bien sur une "vraie" cellule que sur un header. Or je n'ai besoin du traitement réalisé dans cet évènement que lorsqu'il ne s'agit pas d'un header. J'ai donc voulu tester l'index de la ligne en me disant que si j'avais -1 comme résultat, j'étais donc sur le header et je n'avais rien besoin de faire.

    Seulement là, j'ai une exception de type "NullReferenceException". C'est totalement débile... Ca laisse penser qu'il ne considère pas le header comme une ligne à part entière. Il est pourtant bien stipuler dans la MSDN que le rowindex du header est -1.

    Est-ce que le fait d'avoir migrer mon projet de VS2003 vers VS2005 et d'avoir remplacer les datagrids par des datagridviews pourrait avoir un rapport ?

    Quelqu'un aurait-il déjà rencontré ce problème?

    Merci d'avance.

    Griftou.

  2. #2
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 184
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 184
    Par défaut
    Bonjour.

    Tu pourrais mettre le code qui pose probléme ? La seule piste qui vient sans le code est que la currentcell est nullifiée et que tu l'utilises dans ce code.

    Cdt.

  3. #3
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Hello,

    Sorry pour le délai mais... c'était le w-e ! ^^

    Voilà donc le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Private Sub dgBons_CurrentCellChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles dgBons.CurrentCellChanged
            If dgBons.CurrentRow.Index <> -1 Then
                'récupération des cartes client
                If Not bgwClient.IsBusy AndAlso searchOK Then
                    Dim args() As String = {dgBons.CurrentRow.Cells("Barcode").Value.ToString, dgBons.Columns(1).HeaderText, dgBons.CurrentRow.Cells(1).Value, dgBons.CurrentRow.Cells(0).Value}
                    bgwClient.RunWorkerAsync(args)
                End If
            End If
        End Sub
    Je ne vois pas pourquoi le currentcell ou le currentrow seraient null. C'est quand même l'event "currentcellchanged". Ce serait abérant.

    Griftou.

  4. #4
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Il me semble qu'à partir du moment ou la currentRow n'est pas null (ce qui est le cas quand le DGV est vide), alors CurrentRow.Index est >=0.
    le test If dgBons.CurrentRow.Index <> -1 est donc inutile.

  5. #5
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Ce test est sensé me dire si l'utilisateur a cliqué sur le header ou non et pas si le datagridview est vide ou non.

    Il est donc tout à fait nécessaire. Car si c'est un clique sur le header, le traitement qui se fait ensuite plante totalement.

    Griftou.

  6. #6
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Clicker sur le header ne change pas la CurrentRow qui reste celle où il y a le petit triangle noir dans la colonne de gauche.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Datagridview header cell diagonal
    Par hotsizzle dans le forum Windows Forms
    Réponses: 3
    Dernier message: 26/11/2008, 14h44
  2. vb2005 datagridview et mise à jour intempestive
    Par JPelli dans le forum Windows Forms
    Réponses: 1
    Dernier message: 24/11/2008, 16h25
  3. [VB2005] DataGridView : LinkColumn
    Par Kropernic dans le forum Windows Forms
    Réponses: 10
    Dernier message: 22/05/2008, 11h29
  4. Réponses: 3
    Dernier message: 06/02/2008, 22h35
  5. [VB2005] DatagridView et colonnes crées manuellement.
    Par azerty53 dans le forum VB.NET
    Réponses: 2
    Dernier message: 07/06/2007, 21h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo