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 :

Evénement "Enter" d'une DataGridView


Sujet :

VB.NET

  1. #1
    Membre actif Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Points : 295
    Points
    295
    Par défaut Evénement "Enter" d'une DataGridView
    Salut,

    J'ai une DataGridView.
    Je souhaite gérer son traitement avec le clavier.

    je m'explique :

    Je veux que quand je séléctionne une ligne de la grille et que je tape Entrer du clavier, telles instructions vont s'executer.

    La dificulté :

    quand je tape Entrer, au lieu d'executer mes instructions, la touche gère en fait le déplacement du curseur sur les ligne (Entrer = passer à la ligne suivante).
    Pour ca, j'ai double cliquer (en mode designer) sur ma grille puis dans l'événement Enter, j'ai tappé mes instructions mais ,je n'arrive pas à les executer.

    Pour faire simple :

    Je souhaite par exemple, quand je tappe la touche entrer dans une ligne du DataGridView, la form se décharge (Me.close) .

    Comment pourrais-je faire?

    Merci de votre aide.

  2. #2
    Membre actif Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Points : 295
    Points
    295
    Par défaut
    Je viens de trouver mieux,

    donc, dans l'événement KeyUp je vérifie si la touche relaché est bien la touche entrer puis j'execute mes instructions.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub dgvTiers_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles dgvTiers.KeyUp
    If e.KeyCode = Keys.Enter Then
    frmAfficheRechercheSKU.lblFournisseur.Text = Trim(Me.dgvTiers.CurrentRow.Cells(0).Value)
    frmAfficheRechercheSKU.lblNumFournisseur.Text = Me.dgvTiers.CurrentRow.Cells(1)Value
    dgvTiers.ClearSelection()
    Me.Close()
    End If
    End Sub
    Ca fonctionne pour la première execution, mais si je charge cette form contenant le code ci dessus une deuxième fois j'ai l'erreur :

    La référence d'objet....

  3. #3
    Membre du Club

    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 20
    Points : 44
    Points
    44
    Par défaut
    Tu peut détourner le problème:
    tu peut créer un autre classe qui hérite directement de DataGridView
    puis tu écrase l'évenement ProcessCmdKey pour intercepter la touche entré
    et tu utilise le noveau datagridview que ta créé à la place.

    code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
            protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)
            {
                if (msg.WParam.ToInt32() = (int)System.Windows.Forms.Keys.Enter)
                {
                    //exemple
                    SendKeys.Send("{Tab}");
                }
                ///Activer la ligne qui suit si tu veux passer la suite de l'evenement.
                //return base.ProcessCmdKey(ref msg, keyData);
            }

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