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";
}
}
}
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';
}
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
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