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#] Evénement du textbox lorsque je termine d'écrire dedans


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2009
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 82
    Points : 40
    Points
    40
    Par défaut [C#] Evénement du textbox lorsque je termine d'écrire dedans
    Bonjour à tous,
    Voilà j'ai un textbox dans ma form dans lequel j'écris un pourcentage et je veux quand je termine d'écrire dedans le nouveau prix s'affiche dans un autre textbox c'est à dire en tenant compte du remise.
    J'ai testé avec l'évènement textBox2_Leave mais ce n'est pas le bon évènement.
    Si quelqu'un sait comment procéder merci de me l'indiquer

  2. #2
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut TextBox_TextChanged
    bonjour
    c'est dans l'evenenement TextBox_TextChanged.
    exemple code:
    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
     
     
    private void percentTextBox_TextChanged(object sender, EventArgs e)
    {
       try
       {
          // Convert the text to a Double and determine if it is a negative number.
          if(double.Parse( percentTextBox.Text) < 0)
          {
             // If the number is negative, display it in Red.Alert !
             percentTextBox.ForeColor = Color.Red;
          }
          else
          {
             // If the number is not negative, display it in Black.
              percentTextBox.ForeColor = Color.Black;
             // mis a jour  Prix dans le 2eme TextBox         
             Price=Price*Double.Parse(percentTextBox.Text);
             TextBoxPrice.Text =Price.ToString();
           }
       }
       catch
       {
          // If there is an error, display the text using the system colors.
          percentTextBox.ForeColor = SystemColors.ControlText;
       }
    }
    bon code...

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2009
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 82
    Points : 40
    Points
    40
    Par défaut
    Bonjour MABROUKI,
    Merci pour ton aide mais quand j'ai essayé ton code ça n'a pas marché.
    Je m'explique encore, dans ma fenêtre j'ai trois textbox:ancien prix,remise et nouveau prix. Dès que ma forme s'affiche j'ai le textbox ancien prix rempli. L'utilisateur doit remplir le textbox remise et dès qu'il termine d'écrire dedans le nouveau prix doit s'afficher dans le troisième code .Avec ton code, rien ne se passe quans je termine d'écrire.

    Merci d'avance

  4. #4
    Membre régulier

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 37
    Points : 81
    Points
    81
    Par défaut
    Bonjour,

    Tu peux le faire avec un leave

    voici un code fait rapidement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private void textBox2_Leave(object sender, EventArgs e)
            {
                double ancienPrix = double.Parse(textBox1.Text);
                double remise = double.Parse(textBox2.Text);
                double nouveauPrix = ancienPrix - (ancienPrix * remise / 100);
                this.textBox3.Text = nouveauPrix.ToString();
            }
    bien sûr je te laisse le soin d'ajouter des controles sur les valeurs pour bien vérifier qu'il s'agit de valeurs numériques et non de caractères
    Mon entreprise recrute des développeurs C#, n'hésitez pas à me contacter par MP

  5. #5
    Membre du Club
    Inscrit en
    Novembre 2009
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 82
    Points : 40
    Points
    40
    Par défaut
    Merci Ginetteguy,ça marche nickel aussi pour l'évènement leave que pour l'évènement textChanged.Merci encore une fois

  6. #6
    Membre du Club
    Inscrit en
    Novembre 2009
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 82
    Points : 40
    Points
    40
    Par défaut
    Bonjour les amis, je veux maintenant ajouter un contrôle sur mon textbox remise:je veux si je le remplis avec une valeur supérieure à 100 que la valeur du textbox remise sera égale à 100.Voilà mon code
    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
     try
       {
    if(Single.Parse(tb_remise.Text)>=100)
    {
    tb_remise.Text =100;
    }
    else
    {
    float ancienPrix =Single.Parse(textBox1.Text);
                float remise = double.Parse(tb_remise.Text);
               float nouveauPrix = ancienPrix - (ancienPrix * remise / 100);
                this.textBox3.Text = nouveauPrix.ToString();
    }
    catch
       {
                percentTextBox.ForeColor = SystemColors.ControlText;
       }
    .Mais ça ne fonctionne pas comme je le souhaite

  7. #7
    Membre régulier

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 37
    Points : 81
    Points
    81
    Par défaut
    C'est normal que ça ne fonctionne pas!
    Tu fais un if pour vérifier si c'est supérieur à 100 et ensuite tu met un else sur le traitement que je t'ai donné.
    Ainsi si la remise est supérieur à 100 tu ne passes pas dans le traitement.
    Supprime tout simplement ton else.
    Mon entreprise recrute des développeurs C#, n'hésitez pas à me contacter par MP

  8. #8
    Membre du Club
    Inscrit en
    Novembre 2009
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 82
    Points : 40
    Points
    40
    Par défaut
    Bonsoir, j'ai fait comme tu m'as dit mais ça ne fonctionne pas .
    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
     
    try
                {
     
                        float ancienPrix = Single.Parse(tbAncienPrix.Text);
                        float remise = Single.Parse(tbRemise.Text);
                        float nouveauPrix = ancienPrix - (ancienPrix * remise / 100);
                        this.tbNouveauPrix.Text = nouveauPrix.ToString();
     
                        if (Single.Parse(tb_remise.Text) >= 100)
                        {
                            tb_remise.Text = 100.ToString();
                        }
     
                }
                catch
                {
     
                    tbRemise.ForeColor = SystemColors.ControlText;
                }
    .Je crois qu'il faut vérifier chaque chiffre écrit ,non?
    Amicalement

  9. #9
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut etre en accord avec soi meme
    bonjour
    il veiller attentivement à ton code avant d' aller à la frappe,et prendre un peu d'air de temps en temps car le cerveau est "un muscle blanc" qui as besoin de pause" comme un le bras lorsqu'il est engourdi.
    Comment se reposer? regarder des poissons dans un quarium,ca donne la solution.
    code :
    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
     
     
     
     private void textBox2_Leave(object sender, EventArgs e)
            {
     
                //Remise strictement superieure  100 
                if(Single.Parse(tb_remise.Text)> 100)
                {
                tb_remise.Text =100;
                }
                // A la sortie du "if" on ne peut etre etre superieur à 100.
                // Aussi cette condition doit etre verifie avant le calcul de la remise
                // Pas apres mon vieux.
     
                //Maintenant on peut utiliser legitimement la remise dans les calculs
     
                float ancienPrix =Single.Parse(textBox1.Text);
                float remise = double.Parse(tb_remise.Text);
                float nouveauPrix = ancienPrix - (ancienPrix * remise / 100);
                this.textBox3.Text = nouveauPrix.ToString();
     
            }
    bon code....

  10. #10
    Nouveau membre du Club
    Inscrit en
    Janvier 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 44
    Points : 30
    Points
    30
    Par défaut
    Même avec le code que tu m'as proposé ça ne marche pas

  11. #11
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut calcul remise
    bonjour lorie
    j'ai recu le msg.
    excuse-moi pour le post precedent mais j'ai repondu trop vite il y a effectivement une petite erreur de logique dans ce maudit test.
    En fait ce que je voulais porter à ton attention c'etait ceci:
    2 cas d'utilisation du "if" :
    1/if avec une seule alternative(choix)
    2/if ...else...:2 alternatives ou plus(choix).
    Dans notre cas il y un seul choix :la remise ne doit pas depasser 100.0,d'ou inutilite du "else",un "if" suffit.
    Maintenant l'erreur dans mon post est la suivante (mais ceci est habitude de programmation).
    Le "if" doit se faire sur la "variable" remise pas sur le textbox.text.
    code:
    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
     
    //conseil general: ne fait jamais de test de calcul sur une valeur de
    //controle  directement mais toujours sur une variable de travail.
     private void textBox2_Leave(object sender, EventArgs e)
            {
     
               //prepare le test
               float remise = double.Parse(tb_remise.Text);
     
                //Remise strictement superieure  100 
                if( remise >100.0)
                {
                   remise =100.0;
                }
                // A la sortie du "if" on ne peut etre etre superieur à 100.
                // Aussi cette condition doit etre verifie avant le calcul de la remise
                // Pas apres mon vieux.
     
                //Maintenant on peut utiliser legitimement la remise dans les calculs
     
                float ancienPrix =Single.Parse(textBox1.Text);
                float nouveauPrix = ancienPrix - (ancienPrix * remise / 100);
                this.textBox3.Text = nouveauPrix.ToString();
     
            }
    Les erreurs de logiques sont frequentes .....et difficiles à deceler ....
    Tant pis pour moi........je dois aller voir l'aquarium de poissons........
    bon code .

  12. #12
    Nouveau membre du Club
    Inscrit en
    Janvier 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 44
    Points : 30
    Points
    30
    Par défaut
    Bonjour mebrouki,même avec ce que tu m'as dit ça ne marche pas.

  13. #13
    Membre régulier

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 37
    Points : 81
    Points
    81
    Par défaut
    Bonjour,
    J'avais été un peu trop vite la dernière fois, normalement avec les commentaires tu devrais comprendre

    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
    private void textBox2_Leave(object sender, EventArgs e)
            {
                // Affectation de la valeur du prix d'origine
                double ancienPrix = double.Parse(textBox1.Text);
                // Affectation de la valeur de la remise
                double remise = double.Parse(textBox2.Text);
                // Vérification de la valeur de la remise
                if (remise > 100)
                {
                    // Si celle ci est supérieur à 100 alors réinitialisation de la valeur
                    // du textbox et de la valeur de la variable
                    textBox2.Text = "100";
                    remise = 100;
                }
                // Calcul du nouveau prix
                double nouveauPrix = ancienPrix - (ancienPrix * remise / 100);
                // Affectation à la textbox du nouveau prix
                this.textBox3.Text = nouveauPrix.ToString();
            }
    Mon entreprise recrute des développeurs C#, n'hésitez pas à me contacter par MP

  14. #14
    Nouveau membre du Club
    Inscrit en
    Janvier 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 44
    Points : 30
    Points
    30
    Par défaut
    Même comme ça ,ça ne marche pas.Avec le code que tu m'as proposé il n'affiche rien dans le textbox du nouveau pris quand je tape la remise

  15. #15
    Membre régulier

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 37
    Points : 81
    Points
    81
    Par défaut
    Quittes tu bien la zone de remise? Car en voulant utiliser un leave, il faut bien entendu que tu quittes cette zone.
    Mon entreprise recrute des développeurs C#, n'hésitez pas à me contacter par MP

  16. #16
    Membre du Club
    Inscrit en
    Novembre 2009
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 82
    Points : 40
    Points
    40
    Par défaut
    Oui je quitte la zone de texte de remise mais ça ne marche pas quand même.
    Je trouve pas comment résoudre ce problème

Discussions similaires

  1. [Débutant] Sélectionner le contenu d'une textbox lorsque l'on fait Tab
    Par Vincent32 dans le forum VB.NET
    Réponses: 2
    Dernier message: 04/05/2012, 08h44
  2. lorsque on termine l'entretien
    Par Invité dans le forum Entretien
    Réponses: 7
    Dernier message: 18/12/2007, 03h09
  3. [VBA-E 2000]Evènement Enter sur TextBox créé dynamiquement
    Par spileo dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 12/04/2007, 23h00
  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. Réponses: 6
    Dernier message: 07/11/2006, 12h36

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