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 :

Opération mathématiques winform


Sujet :

Windows Forms

  1. #1
    Candidat au Club
    Inscrit en
    Février 2011
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 10
    Points : 4
    Points
    4
    Par défaut Opération mathématiques winform
    salut !
    je commence a programmer a C # une petite application winform Mais j'ai eu un problème !!
    voila j'ai créé 3 textBox pour lire les donnees et un botton pour fair le calcul et un label pour le résultat
    voila le code ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            private void button1_Click(object sender, EventArgs e)
            {
                double fc28 = Convert.ToDouble(textBox1.Text);
                double teta = Convert.ToDouble(textBox2.Text);
                double gamab= Convert.ToDouble(textBox3.Text);
     
                double fbu = (0.85 * fc28) / (teta * gamab);
                string FBU = Convert.ToString(fbu);
                label8.Text = FBU;
     
            }
    mais je veut que les textbox accepte que les numéro et accepte le . en tant que virgule !!

    et quand j'entre des lettres je reçois un message d'erreur
    ************* Texte de l'exception **************
    System.FormatException: Le format de la chaîne d'entrée est incorrect.
    à System.Number.ParseDouble(String value, NumberStyles options, NumberFormatInfo numfmt)
    à System.Convert.ToDouble(String value)
    à WindowsFormsApplication1.Form1.button1_Click(Object sender, EventArgs e) dans C:\Users\SMIQRI\documents\visual studio 2010\Projects\dimmensionement fenetre last\dimmensionement fenetre last\Form1.cs:ligne 36
    à System.Windows.Forms.Control.OnClick(EventArgs e)
    à System.Windows.Forms.Button.OnClick(EventArgs e)
    à System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
    à System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    à System.Windows.Forms.Control.WndProc(Message& m)
    à System.Windows.Forms.ButtonBase.WndProc(Message& m)
    à System.Windows.Forms.Button.WndProc(Message& m)
    à System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    à System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    à System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

    ...
    Merci de me diriger

  2. #2
    Membre expérimenté Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Morbihan (Bretagne)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Points : 1 732
    Points
    1 732
    Par défaut
    Salut,
    Je te conseil d'utiliser des MaskedTextBox.

  3. #3
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    double fc28 ;
    string s = textBox1.Text.Trim().Replace('.',',') ;
    if (!double.TryParse(s,out fc28)) MessageBox.Show("Valeur incorrecte : "+s) ;
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  4. #4
    Membre éprouvé Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Points : 1 188
    Points
    1 188
    Par défaut
    Bonjour,

    Citation Envoyé par Graffito Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    double fc28 ;
    string s = textBox1.Text.Trim().Replace('.',',') ;
    if (!double.TryParse(s,out fc28)) MessageBox.Show("Valeur incorrecte : "+s) ;
    NON, pas cette bidouille qui ne fonctionne qu'avec les PC dont la culture est en français...

    Il faut plutôt utiliser la surcharge avec NumberStyles.AllowDecimalPoint...

    Voici des exemples issus de la MSDN...

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
        static class Program
        {
            static void DecimalParse(NumberStyles styles,
            IFormatProvider provider)
            {
                string[] decimalFormats = { "9876543210.9876543210", 
                "9876543210,9876543210", "(9876543210,9876543210)", 
                "9,876,543,210,987,654.3210", 
                "9.876.543.210.987.654,3210", 
                "98_7654_3210_9876,543210" };
     
                // Parse each string in the decimalFormats array, using 
                // NumberStyles and IFormatProvider, if specified.
                foreach (string decimalString in decimalFormats)
                {
                    decimal decimalNumber;
     
                    // Display the first part of the output line.
                    Console.Write("  Parse of {0,-29}",
                        String.Format("\"{0}\"", decimalString));
     
                    try
                    {
                        // Use the appropriate Decimal.Parse overload, 
                        // based on the parameters that are specified.
                        if (provider == null)
                            if (styles < 0)
                                decimalNumber =
                                    Decimal.Parse(decimalString);
                            else
                                decimalNumber = Decimal.Parse(
                                    decimalString, styles);
                        else
                            if (styles < 0)
                                decimalNumber = Decimal.Parse(
                                    decimalString, provider);
                            else
                                decimalNumber = Decimal.Parse(
                                    decimalString, styles, provider);
     
                        // Display the resulting value if Parse succeeded.
                        Console.WriteLine("succeeded: {0}",
                            decimalNumber);
     
                    }
                    catch (Exception ex)
                    {
                        // Display the exception message if Parse failed.
                        // Truncate it to fit on the output line.
                        Console.WriteLine("failed: {0}",
                            ex.Message.Substring(0, 31));
                    }
                }
            }
     
            static void Main()
            {
                Console.WriteLine("This example of\n  Decimal.Parse( " +
                    "String ),\n  Decimal.Parse( String, NumberStyles " +
                    "),\n  Decimal.Parse( String, IFormatProvider ), " +
                    "and\n  Decimal.Parse( String, NumberStyles, " +
                    "IFormatProvider )\ngenerates the " +
                    "following output when run in the [{0}] culture.",
                    CultureInfo.CurrentCulture.Name);
                Console.WriteLine("Several string representations " +
                    "of Decimal values are parsed.");
     
                // IFormatProvider and NumberStyles are not used.
                Console.WriteLine(
                    "\nNumberStyles and IFormatProvider are not " +
                    "used; current culture is [{0}]:",
                    CultureInfo.CurrentCulture.Name);
                DecimalParse((NumberStyles)(-1), null);
     
                // Use the NumberStyle for Currency.
                Console.WriteLine("\nNumberStyles.Currency " +
                    "is used; IFormatProvider is not used:");
                DecimalParse(NumberStyles.Currency, null);
     
                // Create a CultureInfo object for another culture. Use
                // [Dutch - The Netherlands] unless the current culture
                // is Dutch language. In that case use [English - U.S.].
                string cultureName =
                    CultureInfo.CurrentCulture.Name.Substring(0, 2) ==
                        "nl" ? "en-US" : "nl-NL";
                CultureInfo culture = new CultureInfo(cultureName);
     
                Console.WriteLine("\nNumberStyles is not used; [{0}] " +
                    "culture IFormatProvider is used:", culture.Name);
                DecimalParse((NumberStyles)(-1), culture);
     
                // Get the NumberFormatInfo object from CultureInfo, and
                // then change the digit group size to 4 and the digit
                // separator to '_'.
                NumberFormatInfo numInfo = culture.NumberFormat;
                numInfo.NumberGroupSizes = new int[] { 4 };
                numInfo.NumberGroupSeparator = "_";
     
                // Use the NumberFormatInfo object as the IFormatProvider.
                Console.WriteLine("\nNumberStyles.Currency is used, " +
                    "group size = 4, separator = \"_\":");
                DecimalParse(NumberStyles.Currency, numInfo);
            }
     
        }
    Bon dév.
    Un âne se croit savant parce qu'on le charge de livres (proverbe américain)

    N'oubliez pas de avant de
    Pas de question techniques par MP, c'est contre la philosophie du forum

  5. #5
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    NON, pas cette bidouille qui ne fonctionne qu'avec les PC dont la culture est en français...
    J'ai répondu le plus exactement et le plus simplement possible à la demande faite par sharingamak, soit :
    mais je veut que les textbox accepte le . en tant que virgule !!
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

Discussions similaires

  1. Opération mathématique sur une table
    Par webrider dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 23/09/2006, 14h01
  2. [Conception] Détection d'opérations mathématiques dans un textfield
    Par lynal dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/06/2006, 08h20
  3. [time]Opération mathématique sur heure
    Par Shaika-Dzari dans le forum Général Python
    Réponses: 4
    Dernier message: 28/12/2005, 19h08
  4. Opération mathématique entre deux Threads
    Par rvzip64 dans le forum Langage
    Réponses: 11
    Dernier message: 13/06/2005, 11h58

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