web-dev-qa-db-fra.com

Détecter le séparateur décimal

Je dois détecter le séparateur décimal dans le réglage actuel des fenêtres. Im using Visual Studio 2010, Windows Form. En particulier, si DecimalSeparator est une virgule, si un point d'entrée utilisateur dans textbox1, j'ai besoin d'afficher zéro dans textbox2.

J'ai essayé avec ce code, mais ne fonctionne pas:

private void tbxDaConvertire_KeyPress(object sender, KeyPressEventArgs e)
    {
        string uiSep = CultureInfo.CurrentUICulture.NumberFormat.NumberDecimalSeparator;
        if (uiSep.Equals(","))
        {
            while (e.KeyChar == (char)46)
            {
                tbxConvertito.Text = "0";
            }
        } 
    }

J'ai également essayé ce code, mais ne fonctionne pas:

private void tbxDaConvertire_KeyPress(object sender, KeyPressEventArgs e)
    {
        string uiSep = CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator;
        if (uiSep.Equals(","))
        {
            if (e.KeyChar == (char)46)
            {
                tbxConvertito.Text = "0";
            }
        } 
    }
38
Vincenzo Lo Palo

Solution:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        char a = Convert.ToChar(Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator);
        if (e.KeyChar == a)
        {
            e.Handled = true;
            textBox1.Text = "0";
        }
    }

Des espoirs qui aident. De cette façon, lorsque vous appuyez sur "." ou "," vous aurez votre zone de texte en 0

MODIFIER:

Si vous souhaitez insérer un 0 à chaque fois que vous frappez le séparateur décimal, voici le code:

char a = Convert.ToChar(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator);
        if (e.KeyChar == a)
        {
            e.KeyChar = '0';
        }
57
Andres

En fait, vous devriez utiliser

Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator

au lieu de

CultureInfo.CurrentUICulture.NumberFormat.NumberDecimalSeparator

L'utilisation du second vous donne les paramètres par défaut du système d'exploitation, qui peuvent être différents de ceux des paramètres régionaux régionaux de l'utilisateur pour un compte d'utilisateur particulier connecté à ce PC

23
user1826054

Vous ne devriez pas utiliser une boucle while, je pense que cela gèlera l'application, utilisez plutôt if, le problème pourrait être ici

1
ppetrov