Gérer une virgule dans un textbox [Résolu]

cs_ammany 2 Messages postés mardi 22 janvier 2008Date d'inscription 22 janvier 2008 Dernière intervention - 22 janv. 2008 à 04:49 - Dernière réponse : nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention
- 22 janv. 2008 à 19:16
Salut , je voudrais gérer une petite calculatrice . Dans mon programme je dois gérer un nombre a virgule ( ex: 10.20) dans une textbox et ensuite faire des calculs avec le chiffre . Mais lorsque je met mon point "." pour faire ma virgule , mon programme n'arrive pas a faire la conversion en double et ca bloque mon programme. voila mon code source.

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace EgliseVieNouvelle
{
    /// <summary>
    /// Summary description for Form1.
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
        private System.Windows.Forms.Label label1;
        private System.Windows.Forms.Label label2;
        private System.Windows.Forms.Button boutonTaxe1;
        private System.Windows.Forms.Button boutonTaxe2;
        private System.Windows.Forms.TextBox PrixSansTaxe;
        private System.Windows.Forms.TextBox PrixTaxé;
        private System.Windows.Forms.Button button1;
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.Container components = null;

        public Form1()
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();

       
        }

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if (components != null)
                {
                    components.Dispose();
                }
            }
            base.Dispose( disposing );
        }

        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.boutonTaxe1 = new System.Windows.Forms.Button();
            this.boutonTaxe2 = new System.Windows.Forms.Button();
            this.label1 = new System.Windows.Forms.Label();
            this.PrixSansTaxe = new System.Windows.Forms.TextBox();
            this.label2 = new System.Windows.Forms.Label();
            this.PrixTaxé = new System.Windows.Forms.TextBox();
            this.button1 = new System.Windows.Forms.Button();
            this.SuspendLayout();
            //
            // boutonTaxe1
            //
            this.boutonTaxe1.Font = new System.Drawing.Font("Verdana", 14.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
            this.boutonTaxe1.Location = new System.Drawing.Point(408, 104);
            this.boutonTaxe1.Name = "boutonTaxe1";
            this.boutonTaxe1.Size = new System.Drawing.Size(136, 40);
            this.boutonTaxe1.TabIndex = 0;
            this.boutonTaxe1.Text = "1 Taxe";
            this.boutonTaxe1.Click += new System.EventHandler(this.boutonTaxe1_Click);
            //
            // boutonTaxe2
            //
            this.boutonTaxe2.Font = new System.Drawing.Font("Verdana", 14.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
            this.boutonTaxe2.Location = new System.Drawing.Point(408, 160);
            this.boutonTaxe2.Name = "boutonTaxe2";
            this.boutonTaxe2.Size = new System.Drawing.Size(136, 40);
            this.boutonTaxe2.TabIndex = 2;
            this.boutonTaxe2.Text = "2 Taxes";
            this.boutonTaxe2.Click += new System.EventHandler(this.boutonTaxe2_Click_1);
            //
            // label1
            //
            this.label1.Font = new System.Drawing.Font("Verdana", 15.75F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
            this.label1.Location = new System.Drawing.Point(16, 48);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(432, 32);
            this.label1.TabIndex = 3;
            this.label1.Text = "Veuillez entrer le prix de l\'article";
            //
            // PrixSansTaxe
            //
            this.PrixSansTaxe.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
            this.PrixSansTaxe.Location = new System.Drawing.Point(64, 112);
            this.PrixSansTaxe.Multiline = true;
            this.PrixSansTaxe.Name = "PrixSansTaxe";
            this.PrixSansTaxe.Size = new System.Drawing.Size(264, 48);
            this.PrixSansTaxe.TabIndex = 4;
            this.PrixSansTaxe.Text = "";
            //
            // label2
            //
            this.label2.Font = new System.Drawing.Font("Verdana", 14.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
            this.label2.Location = new System.Drawing.Point(72, 200);
            this.label2.Name = "label2";
            this.label2.Size = new System.Drawing.Size(112, 40);
            this.label2.TabIndex = 5;
            this.label2.Text = "Total";
            //
            // PrixTaxé
            //
            this.PrixTaxé.Font = new System.Drawing.Font("Verdana", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
            this.PrixTaxé.Location = new System.Drawing.Point(208, 192);
            this.PrixTaxé.Multiline = true;
            this.PrixTaxé.Name = "PrixTaxé";
            this.PrixTaxé.ReadOnly = true;
            this.PrixTaxé.Size = new System.Drawing.Size(120, 40);
            this.PrixTaxé.TabIndex = 6;
            this.PrixTaxé.Text = "";
            //
            // button1
            //
            this.button1.Font = new System.Drawing.Font("Verdana", 14.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
            this.button1.Location = new System.Drawing.Point(408, 216);
            this.button1.Name = "button1";
            this.button1.Size = new System.Drawing.Size(136, 40);
            this.button1.TabIndex = 7;
            this.button1.Text = "Effacer";
            this.button1.Click += new System.EventHandler(this.button1_Click);
            //
            // Form1
            //
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(560, 278);
            this.Controls.Add(this.button1);
            this.Controls.Add(this.PrixTaxé);
            this.Controls.Add(this.label2);
            this.Controls.Add(this.PrixSansTaxe);
            this.Controls.Add(this.label1);
            this.Controls.Add(this.boutonTaxe2);
            this.Controls.Add(this.boutonTaxe1);
            this.Name = "Form1";
            this.Text = "Calculatrice Librairie Vie Nouvelle";
            this.ResumeLayout(false);

        }
        #endregion

        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.Run(new Form1());
        }

        private void boutonTaxe1_Click(object sender, System.EventArgs e)
        {
           
            String ValeurEntrée = PrixSansTaxe.Text;
            double prix = Double.Parse(ValeurEntrée);
            prix = prix+(prix*0.05);
            this.PrixTaxé.Text = "      "+prix.ToString();
           
        }
        private void boutonTaxe2_Click_1(object sender, System.EventArgs e)
        {
            String ValeurEntrée = PrixSansTaxe.Text;
            double prix = Double.Parse(ValeurEntrée);
            prix = prix+(prix*0.05);
            prix = prix+(prix*0.075);
            this.PrixTaxé.Text = "      "+prix.ToString();
        }

        private void button1_Click(object sender, System.EventArgs e)
        {
            this.PrixSansTaxe.Text = "    ";
            this.PrixTaxé.Text = "      ";
        }

       

    }
}

Dans mon cas la valeur ValeurEntrée doit etre transfomé en double pour pouvoir effectuer le cacul. merci de votre aide.

Yohan
Afficher la suite 

5 réponses

Répondre au sujet
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 22 janv. 2008 à 09:17
+3
Utile
Salut

Pour avoir le caractere de séparation CultureInfo
.
CurrentCulture
.
NumberFormat
.
NumberDecimalSeparator. et , comme ça ton programme fonctionnera dans les deux cas.

Ensuite tu as Decimal.Parse pour faire une conversion, aussi.

Bon courage


 
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de nhervagault
lemmingperceval 128 Messages postés mardi 18 décembre 2007Date d'inscription 2 août 2009 Dernière intervention - 22 janv. 2008 à 08:19
0
Utile
Salut,

Dans la class String tu as une méthode Replace,
regarde de ce coté:
http://msdn2.microsoft.com/fr-fr/library/czx8s9ts(VS.80).aspx
Commenter la réponse de lemmingperceval
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 22 janv. 2008 à 09:20
0
Utile
PS : Si tu ne veux pas avoir trop de problème d'arrondi, je te conseille d'utiliser des decimals

Car les doubles sont des nombres flottants et donc pas fait pour des opérations bancaires ou de gestion.
Commenter la réponse de nhervagault
cs_ammany 2 Messages postés mardi 22 janvier 2008Date d'inscription 22 janvier 2008 Dernière intervention - 22 janv. 2008 à 18:36
0
Utile
Salut [auteur/NHERVAGAULT/84425.aspx nhervagault]

je sais pas vraiment ou mettre ton truc la: CultureInfo
.
CurrentCulture
.
NumberFormat
.
NumberDecimalSeparator.
 jai essayé de faire ca

private void boutonTaxe1_Click(object sender, System.EventArgs e)
        {
           
            String ValeurEntrée = PrixSansTaxe.Text;
            double prix = Double.Parse(ValeurEntrée);
            prix = Decimal.Parse(prix);
            prix = prix+(prix*0.05);
            this.PrixTaxé.Text = "      "+prix.ToString();
           
        }
mais ca ne marche pas . Merci pour ton aide
Commenter la réponse de cs_ammany
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 22 janv. 2008 à 19:16
0
Utile
As-tu trouvé pour valider la réponse

Tu ne dois pas parser deux fois c'est pour passer de string -> decimal
et pas de double -> decimal comme dans ton code

Sinon pour la CultureInfo
.
CurrentCulture
.
NumberFormat
.
NumberDecimalSeparator
Ca te donnes , ou . en fonction du séparateur choisit par ton utilisateur et definit dans les options regional.
Google ou msdn sont la pour t'aider dans son utilistation

Bon courage
Commenter la réponse de nhervagault

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.