separador punto obtener miles decimales con c# globalization

punto - separador de miles c#



Detectar separador decimal (3)

Tengo que detectar separador decimal en la configuración actual de Windows. Estoy usando Visual Studio 2010, forma Windows. En particular, si DecimalSeparator es una coma, si el usuario ingresa un punto en el cuadro de texto1, necesito mostrar cero en el cuadro de texto2.

Intenté con este código, pero no funciona:

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

He intentado también este código, pero no funciona:

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


En realidad deberías estar usando

Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator

en lugar de

CultureInfo.CurrentUICulture.NumberFormat.NumberDecimalSeparator

El uso de la segunda le proporciona la configuración predeterminada del sistema operativo, que puede ser diferente a la configuración regional regional del usuario para una cuenta de usuario particular registrada en esta PC


No deberías usar un bucle while, creo que congelará la aplicación, usa if , en cambio, el problema podría estar aquí


Solución:

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

Espera que ayude. De esa manera, cuando pulses "." o "," tendrá su cuadro de texto en 0

EDITAR:

Si desea insertar un 0 cada vez que presione el separador decimal, este es el código:

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