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 :

comment vider le contenu d'un textbox apres plusieurs secondes


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Par défaut comment vider le contenu d'un textbox apres plusieurs secondes
    bonjour,
    j'aimerais réaliser une petite tâche en c#.
    on va faire simple pour décrire ce que je veux faire.
    disons qu'avec un bouton, je valorise un label, et j'aimerais que celui-ci se vide tout seul après 3 secondes environ.

    sauriez-vous comment je pourrais procéder ? j'ai chercher sur google bien sûr, mais je reviens bredouille u_u, lol

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 388
    Par défaut
    Lu, tres simple tu crees un timer avec un interval de 3 secondes, tu implementes l'evenement "tic" dans lequel tu reinitialises ton label.

  3. #3
    Membre éprouvé

    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 65
    Par défaut
    Bonjour,

    Alors en fait c'est pas bien compliqué.

    Déjà il faut savoir si pendant ces 3 secondes tu veux pauser ton programme, dans ce cas là tu peux faire une boucle comme cela à l'appuie du bouton:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    DateTime debut = DateTime.Now;
     
    while(DateTime.Now - debut < 3000)
    {}
     
    //Ensuite faire ce que tu veux ;)

    Sinon si tu veux que ca le fasse au bout de 3 secondes sans intérompre ton programme il faut que tu execute cela dans un thread. Tu as de très bons tutos sur le threading sur le site.

    En fait l'appuie sur ton bouton provoquerai le début du thread, qui contiendrait la même chose que ce que j'ai mis plus haut .


    EDIT : Oui la solution plus haut est aussi simple c'est sur

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Par défaut
    merci pour ces réponses, je vais essayer les deux
    lol

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Par défaut
    j'ai écris ça, mais ça ne marche pas u_u
    le label n'est jamais valorisé !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    LblTaux.Text = (z * 100) + " %";
    System.Timers.Timer aTimer = new System.Timers.Timer();
    aTimer.Interval = 3000;
    LblTaux.Text = "";

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 388
    Par défaut
    Ce code est a quel niveau??Au debut, lors du clic?

    Le mieux c'est de faire ca au debut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    LblTaux.Text = (z * 100) + " %";
    System.Timers.Timer aTimer = new System.Timers.Timer();
    aTimer.Interval = 3000;
    Ta fonction de clic sur le bouton doit ressembler a quelquechose comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private void button1_Click(object sender, System.EventArgs e)
    {
        aTimer.Start();
    }
    Et enfin tu ecris ta fonction de tic du timer...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        LblTaux.Text = "";

  7. #7
    Membre éprouvé

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2008
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 76
    Par défaut
    Je pense que dans ton compte tu as oublié de:
    1. Associer une action à déclencher à la fin du timer.
    2. Lancer le timer (start()).

    Sinon petite remarque, tu n'es pas obligé de faire référence à System.Timers. Dans l'espace de nom System.Windows.Forms tu as aussi une classe Timer (System.Windows.Forms.Timer)

    A titre d'exemple, voici un morceau de code basique avec un label et un bouton sur un Form

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    namespace TestTimer
    {
    public partial classForm1 : Form
    {
     public Form1()
     {
       InitializeComponent(); 
     }
     
     privatevoid button1_Click(object sender, EventArgs e)
     {
       Timer myTimer = new System.Windows.Forms.Timer();
       myTimer.Interval = 3000;
       myTimer.Tick += delegate(object evtSender, EventArgs evtArg)
       {
         this.myLabel.Text = "Cancelled";
       };
     
       myTimer.Start();
     }
    }
    }
    Pour du code plus compliqué, tu peux remplacer le délégué anonyme (delegate(....){} ) par une référence à une methode de ton code.

    J'espère que celà va t'aider.

    A+

  8. #8
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Par défaut
    le code que j'ai donné se passe à la fin du clique :

    grosso modo, voila ce qui se passe dans la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    public void Zoom(Bitmap myImage, double zoom)
            {
                int Hauteur = uneImage.GetHauteurImg();
                int Largeur = uneImage.GetLargeurImg();
     
                // zoom de 20% >> 1 + (2/10) >> 1 + 0.20 >> 1.20
                double z = ((zoom / 10) + 1);
     
                if ((z >= 1) && (z <= 3))
                {
                    int NouvelleHauteur = Convert.ToInt32(Math.Ceiling(Hauteur * z));
                    int NouvelleLargeur = Convert.ToInt32(Math.Ceiling(Largeur * z));
     
                    Bitmap myImage2 = new Bitmap(myImage, new Size(NouvelleLargeur, NouvelleHauteur));
                    PBImage.Image = myImage2;
     
                    ReglageTaillePBimage(NouvelleLargeur, NouvelleHauteur);
                    PositionInitialePBImage();
     
                    LblTaux.Text = (z * 100) + " %";
     
                    // on attend 3 secondes
     
                    // on vide le label
     
                    LblTaux.Text = "";
                }
            }
    le début du code permet de calculer le taux en % à afficher dans le label, puis on le vide après.

    j'ai recopié ton code, voilà ce que ca donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    public void Zoom(Bitmap myImage, double zoom)
            {
                int Hauteur = uneImage.GetHauteurImg();
                int Largeur = uneImage.GetLargeurImg();
     
                // zoom de 20% >> 1 + (2/10) >> 1 + 0.20 >> 1.20
                double z = ((zoom / 10) + 1);
     
                if ((z >= 1) && (z <= 3))
                {
                    int NouvelleHauteur = Convert.ToInt32(Math.Ceiling(Hauteur * z));
                    int NouvelleLargeur = Convert.ToInt32(Math.Ceiling(Largeur * z));
     
                    Bitmap myImage2 = new Bitmap(myImage, new Size(NouvelleLargeur, NouvelleHauteur));
                    PBImage.Image = myImage2;
     
                    ReglageTaillePBimage(NouvelleLargeur, NouvelleHauteur);
                    PositionInitialePBImage();
     
                    LblTaux.Text = (z * 100) + " %";
                    System.Timers.Timer aTimer = new System.Timers.Timer();
     
                    aTimer.Start();
                    if (tics >= 3)
                    {
                        LblTaux.Text = "";
                        aTimer.Stop();
                    }
                    else
                    {
                        tics++;
                    }
                }
            }
    mais "tics" n'est pas reconnu.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/07/2009, 16h24
  2. Comment controler le contenu d'une textBox?
    Par shyx21 dans le forum C#
    Réponses: 13
    Dernier message: 15/01/2008, 20h21
  3. Réponses: 2
    Dernier message: 02/11/2007, 18h12
  4. Comment supprimer le contenu d un textbox lorsqu'on clik dessus
    Par orj30754 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 20/02/2007, 16h28
  5. [C#] Comment vider le contenu d'un Repeater ?
    Par luimême dans le forum ASP.NET
    Réponses: 2
    Dernier message: 03/01/2006, 10h29

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