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

C# Discussion :

Supprimer tous les KeyPressEventHandler sur TextBox


Sujet :

C#

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Supprimer tous les KeyPressEventHandler sur TextBox
    Bonjour,

    Je cherche depuis plusieurs heures sans succès comment supprimer tous les KeyPressEventHandler qui aurait pu être activé sur un TextBox.
    Quelqu'un peut-il m'aider ?
    Pour le moment je fais

    monTextBox.KeyPress -= new KeyPressEventHndler(maFonction)

    pour l'ensemble des fonctions.
    Merci, cela me ferait gagner beaucoup de temps.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    En fait, c'est à toi de savoir quels sont les fonctions qui ont été rajoutées à ton eventhandler et combien de fois tu les as rajoutées.
    Cela dit voici une petite astuce si à un moment donné tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monTextBox.KeyPress += maFonction
    mais tu souhaites que ce ne soit abonné qu'une fois, fais le précéder par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monTextBox.KeyPress -= maFonction
    Sinon si ça ne résout pas ton soucis, n'hésites pas à fournir du code pour que nous puissions mieux te conseiller.

  3. #3
    Membre chevronné
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 640
    Points : 2 149
    Points
    2 149
    Par défaut
    Regarde dans le fichier NomDeTaForm.Designer.cs , et cherche ta TextBox , tu verras toutes les méthodes qui y sont rattachés a l'évenement , tu pourras les enlever a ta guise.

  4. #4
    Candidat au Club
    Inscrit en
    Septembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Merci pour cette réponse mais c'est un petit plus compliqué que ça.
    J'ai créé dynamiquement un TextBox qui sert à plusieurs endroits, je lui affecte donc régulièrement des EventHandler selon mes besoins, cependant il me faut enlever l'ensemble des fonctions possibles avant toute affectation d'un nouvel EventHandler, c'est pour cette raison que j''aimerais les toutes les enlever sans savoir lesquels ont été affectées.

  5. #5
    Membre chevronné
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 640
    Points : 2 149
    Points
    2 149
    Par défaut
    Essaye le code qui est fourni , je l'avais déja utilisé il marche bien.

  6. #6
    Candidat au Club
    Inscrit en
    Septembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Bien vu, mais j'ai déjà essayé ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private void RemoveKeyPressEvent(Button b)
    {
          FieldInfo f1 = typeof(Control).GetField("EventKeyPress", BindingFlags.Static | BindingFlags.NonPublic);
          object obj = f1.GetValue(b);
          PropertyInfo pi = b.GetType().GetProperty("Events", BindingFlags.NonPublic | BindingFlags.Instance);
          EventHandlerList list = (EventHandlerList)pi.GetValue(b, null);
          list.RemoveHandler(obj, list[obj]);
    }
    Mais j'ai toujours un nullException sur la 2ème ligne, donc le getField ne me renvoie rien.

  7. #7
    Candidat au Club
    Inscrit en
    Septembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Petite précision, le développement se fait en CF.Net 3.5

  8. #8
    Invité
    Invité(e)
    Par défaut
    tu veux dire compact Framework?
    Ah oui, je n'ai jamais développé en Compact Framework mais cependant les règles dont je t'ai parlées sont en principe les mêmes. Il faut vraiment que tu fasses attention à quel moment tu fais un "abonnement à la volée" d'une part et d'autre part n'hésites pas à faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    monTextBox.KeyPress -= maFonction;
    monTextBox.KeyPress += maFonction;
    si tu veux que l'événement KeyPress ne soit pas abonné plusieurs fois à la même fonction. Cette instruction ne provoquera pas d'exception si "maFonction" n'était pas déjà abonné.

Discussions similaires

  1. supprimer tous les messages antérieurs à une date sur exchange 2010 SP1
    Par mmichou dans le forum Autres Solutions d'entreprise
    Réponses: 0
    Dernier message: 11/01/2015, 11h42
  2. supprimer tous les rdv du calendrier outlook
    Par arnolpourri dans le forum Access
    Réponses: 6
    Dernier message: 25/05/2005, 10h57
  3. Méthode pour supprimer tous les enfants d'un élément
    Par Pymm dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 10/05/2005, 12h10
  4. Réponses: 4
    Dernier message: 24/09/2004, 10h17
  5. [Tomcat] Comment supprimer tous les logs ?
    Par Soulsurfer dans le forum Tomcat et TomEE
    Réponses: 8
    Dernier message: 11/05/2004, 16h35

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