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

VB.NET Discussion :

Controler la sortie d'une cellule dans un DataGridview


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Controler la sortie d'une cellule dans un DataGridview
    Bonjour,

    Je suis nouveau sur ce forum, j'espere que vous me pardonnerez d'eventuels ecarts par rapport aux conventions de ce forum.

    Je suis en train de developper une petite application en vb.net sous MS Visual Studio 2005 et je rencontre un petit probleme sur un de mes formulaires.

    Le contexte : le formulaire contient un certain nombre d'objets dont un objet DataGridview avec 2 colonnes de texte et x lignes. Le remplissage de ces deux colonnes est fait automatiquement lors de l'acces initial a ce formulaire. L'utilisateur ne peut modifier que le contenu des cellules de la deuxieme colonne.
    Le probleme: quand l'utilisateur modifie le contenu d'une cellule, j'aimerais bloquer la sortie de cette cellule si son nouveau contenu est vide.

    Il semble que l'evenement myDataGridView.CellLeave n'ait pas d'argument e.Cancel. J'ai donc tente le code suivant pour redonner le focus a ma cellule vide mais il ne marche pas. Apparemment, le contenu de ma cellule est pas encore vide dans mon bloc if/end if...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    Private Sub Gridview_CellsChanged(ByVal sender As System.Object, ByVal e As DataGridViewCellEventArgs) Handles myDataGridView.CellLeave
     
            Dim myRowIndex, myColIndex As Integer
     
            ' Get the coordinates of the selected cell
     
            myRowIndex = myDataGridView.SelectedCells(0).RowIndex
            myColIndex = myDataGridView.SelectedCells(0).ColumnIndex
     
            ' Block the exit by reselecting the cells
     
            If myDataGridView.Rows(myRowIndex).Cells(myColIndex).Value = "" Then
                myDataGridView.Rows(myRowIndex).Cells(myColIndex).Selected = True
            End If
     
        End Sub
    Je pense que je pourrais regler le probleme en utilisant un evenement myDataGridView.Lostfocus et en verifiant le contenu de toutes mes cellules mais ca serait 1- moins intuitif et 2- bourrin !
    J'appreciais donc toute suggestion pour remedier a ce petit soucis. Merci d'avance.

  2. #2
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 337
    Points : 319
    Points
    319
    Par défaut
    Essaye dans ta boucle if :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     If myDataGridView.item(myRowIndex,myColIndex).Value = "" Then
             myDataGridView.Rows(myRowIndex).Cells(myColIndex).Selected = True
     End If
    ps : j'ai un doute sur le .value, essaye avec un .toString au cas ou...

  3. #3
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Ma reponse est tardive boubounne, mais merci pour ton post.

    Malheureusement, ton astuce ne change rien a l'affaire. Le probleme vient du fait que le contenu de myDataGridView.item(myRowIndex,myColIndex) n'est pas le contenu (potentiellement vide) edite par l'utilisateur mais bien l'ancien. Je pense que j'utilise le mauvais evenement mais je n'arrive pas a trouver lequel serait le plus approprie.

  4. #4
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    OK j'ai trouve la solution. J'utilise l'evenement CellValidating, je teste le contenu de e.FormattedValue, s'il est egal a Nothing j'appelle e.Cancel.

    Et le tour est joue !

    Merci quand meme pour ton aide.

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

Discussions similaires

  1. Modifier le type d'une cellule dans un datagridview
    Par Machine Head dans le forum Windows Forms
    Réponses: 0
    Dernier message: 06/10/2009, 12h48
  2. Clignoter une cellule dans un DataGridView
    Par amirad dans le forum VB.NET
    Réponses: 1
    Dernier message: 25/09/2009, 19h23
  3. lire une cellule dans une DBGrid
    Par flo74 dans le forum Bases de données
    Réponses: 10
    Dernier message: 30/01/2006, 08h52
  4. Réponses: 8
    Dernier message: 15/07/2005, 14h23
  5. Modifier Font d'une cellule dans Excel
    Par nmathon dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 27/05/2005, 14h42

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