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 :

Réinitialiser un TextBox sans généner l'évènement TextChanged


Sujet :

C#

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 15
    Points : 13
    Points
    13
    Par défaut Réinitialiser un TextBox sans généner l'évènement TextChanged
    Bonjour,
    j'ai une Form sur laquelle j'ai mis des textBox qui me servent à filtrer une DataGridView.
    Les filtres sont appélés via l'évènement TextChanged.
    Je souhaite par le code vider mes textBox, le problème est que si un textBox contenait du texte, l'évènement TextChanged est appelé quand je le vide et mes requêtes SQL de filtres sont executées.
    Du coup j'ai créé une petite fonction toute simple pour vider un textbox dans laquelle je retire l'évènement TextChanged, je vide le textBox puis je remet l'évènement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    private void clearTextBox1()
            {
                this.textBox1.TextChanged -= this.textBox1_TextChanged;
                this.textBox1.Clear();
                this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);
            }
    Cela marche tres bien, sauf que si j'ai 10 textBox je dois créer autant de fonction.

    Je souhaite donc créer une fonction dans laquelle je passerai en argument mon control Textbox que je souhaite vider, mais la je coince sur comment stocker mon évènement TextChanged pour le retirer de mon textBox puis le réaffecter après avoir vider mon textbox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    private void clearTextBox(TextBox tb)
            {
                EventHandler textChanged;
                textChanged += tb.TextChanged;
                //this.textBox1.TextChanged -= this.textBox1_TextChanged;
                tb.Clear();
                //this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);
             }
    si quelqu'un à une idée.
    merci

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 114
    Points : 122
    Points
    122
    Par défaut
    quelque chose comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            private void textBox_TextChanged(object sender, EventArgs e)
            {
                EventHandler evt = new EventHandler(((TextBox)sender).TextChanged);
                ((TextBox)sender).TextChanged -= evt;
                ((TextBox)sender).Text = "";
                ((TextBox)sender).TextChanged += evt;
            }

Discussions similaires

  1. Réponses: 6
    Dernier message: 05/01/2010, 22h15
  2. textbox sans restriction de saisie
    Par vbword dans le forum VBA Word
    Réponses: 21
    Dernier message: 29/09/2009, 16h40
  3. Réponses: 3
    Dernier message: 06/10/2008, 14h00
  4. problème de l'événement textchange du textxbox :
    Par ahmedmido dans le forum ASP.NET
    Réponses: 4
    Dernier message: 29/08/2008, 13h37
  5. Redimensionner une fenêtre sans déclencher d'évènement
    Par troubleshooting dans le forum C++
    Réponses: 3
    Dernier message: 07/08/2008, 12h40

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