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 :

Ajouter l'évenement keypress


Sujet :

VB.NET

  1. #1
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Points : 929
    Points
    929
    Par défaut Ajouter l'évenement keypress
    Bonjour

    J'ai une class qui hérite de la class label
    Est il possible de lui ajouter un evenement keypress ?

    Merci

  2. #2
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    au moment de l'initialisation tu peux écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    instanceDeMaClasse.KeyPress += new System.Windows.Forms.KeyPressEventHandler(monHandlerKeyPress);
    il faut que la fonction monHandlerKeyPress soit défini comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void monHandlerKeyPress(object sender, KeyPressEventArgs e) {
    	// des trucs à faire
    }
    (la portée n'a pas d'importance en soit, il faut juste qu'elle soit visible pour ton contrôle ... je crois)
    Plus je connais de langages, plus j'aime le C.

  3. #3
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Points : 929
    Points
    929
    Par défaut
    Je ne pense pas que c'est possible
    Après avoir lu
    http://forums.codeguru.com/showthrea...label-control!

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2012
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2012
    Messages : 80
    Points : 163
    Points
    163
    Par défaut
    Je ne connais pas la finalité mais... ci-dessous, les 2 idées qui me viennent.

    solution 1 : tu superpose une textbox au label. Un coup de visible sur le focus du label.

    solution 2: remplacer le label par une textbox sur laquelle tu enlève les bordures. ça aura l'apparence d'une bière mais avec l'effet de la pression (du clavier).

  5. #5
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    J'avoue que j'ai pas creuser, je suis juste allé sur la MSDN voir le description de System.Windows.Forms.Label (qui contient l'event ... hérité de Control mais qui n'est d'ailleurs même pas proposé dans le designer de VS).
    Il est vrai qu'un contrôle qui ne peut pas avoir de focus va difficilement capter les events clavier.
    Plus je connais de langages, plus j'aime le C.

  6. #6
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Points : 929
    Points
    929
    Par défaut
    j'ai demandé aussi au forum microsoft
    et obtenu les réponses suivantes

    A standard label control has several keyboard events which are at the API level and are not intended for used directly in code. Think about it, there is nothing a user can do to raise such event which would be a KeyPressEventHandler (delegate).

    So the answer is yes but to no avail and the real answer is no using the information above.
    As Kevin has said, yes you can but, a Label is not made to capture the keyboard focus like a TextBox or other focus-able control that uses Key Presses so, you would need to add code that would make it accept focus. Depending on what you are using the label for there may be a better choice or it may even be better to Inherit from Control or and create the code to make it function the way you want.

  7. #7
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    La première question doit être : as tu choisi le bon contrôle ?

    Le label ne semble pas visiblement pas correspondre en terme technique.
    Un label sert a afficher du texte, c'est (quasiment) tout.

    Si il y a un KeyPress nécessaire, alors c'est que tu avais prévu que l'utilisateur clique sur le label (ou le sélectionne d'une manière ou d'une autre) puis qu'il presse une touche clavier.

    Or un label n'est pas prévu pour interagir avec un clavier.

    Donc soit de deux choses :

    - Soit tu gardes ton label cliquable, (en mode ON/OFF, avec changement de couleur) et tu utilises les KeyPress de la Form qui va regarder sur quelle label tu as cliqué pour savoir quoi faire. (donc la sélection du label et le keypress du clavier sont séparés)

    - Soit le label ne va pas, alors un bouton, un textbox, (des contrôles qui ont aussi du texte) ou quelque chose d'autre conviendrai mieux.


    Si tu détails un peu plus ton besoin, on pourrait trouver ce qu'il te faut.
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  8. #8
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Points : 929
    Points
    929
    Par défaut
    bon au faite j'essayais de répondre à ce post

    http://www.developpez.net/forums/d14...gn-tabcontrol/

    Petite sous question, vous savez comment mettre en transparence une textbox ?
    Pour un Label pas de problème mais pas pour une textbox.
    en pensant donner au label le keypress et obtenir la transparence

  9. #9
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Oui donc... il aurait mieux valus rester sur le problème initiale.

    Tu pensais peut être utiliser les flèches "pour changer d'onglet" (changer de panels) pour simuler un TabControl (sans en avoir un).

    Et c'est tout à fait faisable donc.


    Tu prends un TableLayoutPanel (tableau transparent),
    (qui accessoirement à la faculté de se redimensionner tout seul quand on resize la fenêtre, et resize les contrôles contenu dans ses cellules si ceux-ci on un Dock=Fill)

    tu créés 2 colonnes, 5 lignes, dans la colonne de gauche tu mets un label par case (dock=fill)
    et dans la colonne de droite autant de panel que de fenêtre, chaque panels s’étalant sur toutes les lignes (RowSpan =5)

    et tu peux "changer d'onglet" (faire apparaître le bon panel) sur l’événement Label-clique, ET/OU dans l’événement KeyPress de la Form, tu détecte si c'est une flèche, tu regardes sur quel panel tu te trouve pour sélectionné le suivant ou le précédent.
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/03/2009, 05h19
  2. L'évenement KeyPress d'une collection de TextBox dynamique
    Par jeanjean0403 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 07/01/2008, 14h16
  3. [Prototype] Ajouter un événement à tous les checkbox
    Par franculo_caoulene dans le forum Bibliothèques & Frameworks
    Réponses: 5
    Dernier message: 19/12/2007, 12h35
  4. Ajouter un évenement à une balise input
    Par kirsoul dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 10/01/2007, 15h28
  5. [C#] ajout d'évenement dynamics
    Par xtream dans le forum Windows Forms
    Réponses: 3
    Dernier message: 23/06/2006, 19h38

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