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#] Format spécial


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 90
    Par défaut [C#] Format spécial
    Bonjour tous le monde, j'ai besoin de votre aide

    Dans un textBox je voudrai avoir un format du type : 1 124 142,00144.
    J'ai trouvé pour le séparateur de millier. Mais le problème est que ce format m'arrondis à deux chiffres après la virgule.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    txtBox.Text = string.Format("{0:n}", double.Parse(txtBox.Text));

    Avez vous une idée?

    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de Greybird
    Inscrit en
    Juin 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 673
    Par défaut
    "{0:n5}" pour 5 décimales ?

    Attention néanmoins, si le poste sur lequelle tu exécute ton application a une culture anglaise, ce format donnera quelque chose comme
    1'124'142.00144
    Si ça te pose un problème, il va falloir gérer ça autrement.

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 90
    Par défaut
    Okey merci beaucoup, je n'avez pas pensé a cette subtilité.

    Sinon je rajoute une petite contrainte.
    Je voudrai que mon utilisateur ne passe que des chiffres, donc lettre et caractère spéciaux exclus, dans ma textBox.
    Je ne sais pas si cela ce fait avec un system.format().

    ^^

  4. #4
    Membre confirmé Avatar de Roach-
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2004
    Messages : 135
    Par défaut
    Voici un usercontrol qui accept uniquement des caractère numérique positif ou négatif.

    Il accepte les , et les . comme séparateur de décimal

    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
     
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Drawing;
    using System.Globalization;
    using System.Windows.Forms;
     
    namespace PrestigeGestion
    {
        public class NumericTextBox : TextBox
        {
            bool allowSpace = false;
     
            // Restricts the entry of characters to digits (including hex), the negative sign,
            // the decimal point, and editing keystrokes (backspace).
            protected override void OnKeyPress(KeyPressEventArgs e)
            {
                base.OnKeyPress(e);
     
                NumberFormatInfo numberFormatInfo = System.Globalization.CultureInfo.CurrentCulture.NumberFormat;
                string decimalSeparator = numberFormatInfo.NumberDecimalSeparator;
                string groupSeparator = numberFormatInfo.NumberGroupSeparator;
                string negativeSign = numberFormatInfo.NegativeSign;
     
                string keyInput = e.KeyChar.ToString();
     
                if (Char.IsDigit(e.KeyChar))
                {
                    // OK
                }
                else if (keyInput.Equals(decimalSeparator) || keyInput.Equals(groupSeparator) ||
                 keyInput.Equals(negativeSign) || keyInput.Equals("."))
                {
                    // Decimal separator is OK
                }
                else if (e.KeyChar == '\b')
                {
                    // Backspace key is OK
                }
                //    else if ((ModifierKeys & (Keys.Control | Keys.Alt)) != 0)
                //    {
                //     // Let the edit control handle control and alt key combinations
                //    }
                else if (this.allowSpace && e.KeyChar == ' ')
                {
     
                }
                else
                {
                    // Swallow this invalid key and beep
                    e.Handled = true;
                    //    MessageBeep();
                }
            }
     
            public int IntValue
            {
                get
                {
                    return Int32.Parse(this.Text);
                }
            }
     
            public decimal DecimalValue
            {
                get
                {
                    return Decimal.Parse(this.Text);
                }
            }
     
            public bool AllowSpace
            {
                set
                {
                    this.allowSpace = value;
                }
     
                get
                {
                    return this.allowSpace;
                }
            }
        }
     
    }

  5. #5
    Rédacteur
    Avatar de Greybird
    Inscrit en
    Juin 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 673
    Par défaut
    Citation Envoyé par Roach- Voir le message
    Voici un usercontrol qui accept uniquement des caractère numérique positif ou négatif.
    Désolé, mais ce contrôle ne remplit pas totalement son rôle. En effet, à mon sens et sans l'avoir testé en live, je dirais qu'on peut toujours coller du texte non numérique dedans.

    Et par ailleurs ton commentaire dit que tu acceptes les digits hexa (ie A-F je suppose), ce qui ne me semble pas vrai

  6. #6
    Membre confirmé Avatar de Roach-
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2004
    Messages : 135
    Par défaut
    D'après tout les test que j,ai fait pas possible de mettre du texte dans ce numtxtbox.

    Pour l'hex je vais vérifier mais je croix avoir enlever cela mais j'ai oublier le comment.

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

Discussions similaires

  1. Tri date avec format spécial
    Par jojom13 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 12/01/2008, 15h21
  2. Format spécial titre et rensignement tableau
    Par heliconet dans le forum Word
    Réponses: 1
    Dernier message: 23/09/2007, 18h03
  3. Format spécial pour le champs numéro de sécurité sociale ?
    Par Boubas1 dans le forum Modélisation
    Réponses: 1
    Dernier message: 12/05/2007, 06h19
  4. [ Access 2003 ] => NuméroAuto de format spécial ?
    Par MaTHieU_ dans le forum Access
    Réponses: 4
    Dernier message: 19/04/2005, 00h25
  5. [JFormattedTextField]Format spécial
    Par eraim dans le forum Composants
    Réponses: 13
    Dernier message: 22/04/2004, 10h20

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