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 :

[C#] Appliquer evenement à tous les TextBox


Sujet :

Windows Forms

  1. #1
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 90
    Par défaut [C#] Appliquer evenement à tous les TextBox
    Bonjour à tous, tout est dans le titre.

    J'ai deux événements sur une TextBox et je voudrai les reproduire sur toutes TextBox de ma form.
    Les événements sont identiques à pars que j'ai besoin du nom du TextBox à un moment.
    Comment faire? Peut être un héritage de TextBox?

    Je ne vois pas comment faire.
    Pouvez-vous m'aider?

    Merci d'avance.

  2. #2
    Invité de passage
    Inscrit en
    Juin 2008
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1
    Par défaut
    Salut,
    Tu as essayé avec le 'sender' ? Tu peux récupérer une text-box à partir du 'sender' dans un événement.
    Tu crée un événement à partir d'une de tes text-ox. Après dans la fenêtre événement de tes text-box, tu n'a cas indiqué l'événement de cette text-box. Et dans l'événement tu utilise le sender...

    Ai-je été clair ?

  3. #3
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Comme le dit Concorde, en récupérant le "sender", tu sauras quel textBox a déclenché l'événement.

    Après, pour abonner cette méthode à tous ces Textbox, deux possibilités : soit via le designer, et dans l'onglet "événements" de la feuille de propriétés de chaque textbox, tu affectes cette même méthode à l'événement "Click" ; ou bien, dans ton constructeur, juste après le InitializeComponents, tu écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach(Control c in this.Controls) // on parcourt tous les contrôles...
      if (c is TextBox) // et si un contrôle est une textbox...
        c.Clicked += TaMéthode; // on lie la méthode à l'événement "Click"
    C'est à dire que t'abonnes la méthode à la main.

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 90
    Par défaut
    TaMéthode doit renvoyer un EventHandler?

    Je ne vois pas comment on peut faire un TextBoxName.Text avec le sender.

  5. #5
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    TaMéthode doit être de la forme suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private void TaMéthode(object sender, Eventargs e)
    {
    ....
    }
    Et comme on disait tout à l'heure, le paramètre sender est la textbox qui a envoyé l'event. Tu peux la récupérer avec TextBox tb = (TextBox)sender.

  6. #6
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 90
    Par défaut
    A la ligne c.Clicked += TaMéthode();

    J'ai cette erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    No overload for method 'TaMéthode' takes '0' arguments
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private void TaMéthode(object sender, KeyPressEventArgs e)
    {
       ...
    }
    Je fait comment pour passer les paramètre?

  7. #7
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Citation Envoyé par JOBiJOBa3 Voir le message
    A la ligne c.Clicked += TaMéthode();
    Relis mon post, je n'ai pas écris c.Clicked += TaMéthode();

  8. #8
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 90
    Par défaut
    J'avais vu mais quand je met c.Clicked += TaMéthode

    J'ai cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    No overload for 'TaMéthode' matches delegate 'System.EventHandler'

  9. #9
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Relis mon post, je n'ai pas écrit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private void TaMéthode(object sender, KeyPressEventArgs e)

  10. #10
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 90
    Par défaut
    Du coup avec Eventargs e

    Je n'est plus accès à :e.KeyChar.

  11. #11
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Ah oui, en effet,c e n'est pas l'événement Click que tu veux abonner, ça doit être le KeyPress (logique, pour une textbox).

    Remplace donc c.Clicked += TaMéthode par c.Keypressed += TaMéthode.

    Mais, quand même, tu vois ce qu'on est en train de faire, ou pas ? La syntaxe objet.Evenement += Méthode permet d'abonner la méthode à l'événement. C'est pas compliqué Il faut juste que la méthode prenne en paramètre (object sender, XXXEvenArgs e), où XXXEventArgs dépend de l'événement. Par exemple, pour les événements "Click", c'est EventArgs ; pour KeyPressed, c'est KeyPressedEventArgs, etc.

  12. #12
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 90
    Par défaut
    C'est bon j'ai compris je me mélange avec deux événement différents.
    désolé
    ^^

    Merci pour ta patience

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

Discussions similaires

  1. parcourir tous les textbox d'une form
    Par olibara dans le forum C#
    Réponses: 2
    Dernier message: 23/09/2008, 12h28
  2. [VB.net]vider tous les textbox en meme temps
    Par Hatchepsout dans le forum VB.NET
    Réponses: 6
    Dernier message: 29/06/2007, 14h23
  3. Réponses: 2
    Dernier message: 06/06/2006, 08h32
  4. [C#] Parcourir tous les TextBox d'un Panel
    Par Oberown dans le forum ASP.NET
    Réponses: 7
    Dernier message: 18/01/2005, 14h04

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