Principales respuestas
¿Establecer separador de miles y decimales en toda la aplicacion en Windows Form C#?

Pregunta
-
Hola...
Desarrollo una aplicacion Windows Form y quisiera saber si existe una forma de establecer para toda la aplicacion los separadores de miles y decimales ?
Es decir si la app lee u obtiene una cantidad de cualquier origen de datos ( WebService , Archivo o Db ) pueda adaptarse y no producir errores .
En mi caso nesecito que el seoarador de miles sea el punto ( . ) y para los decimales la coma ( , )
43.714,29 Cuarenta y tres mil setecientos catorce con veintinueve
EFRAIN MEJIAS C VALENCIA - VENEZUELA
- Editado Efrain Mejias Castillo jueves, 7 de mayo de 2020 14:08
Respuestas
-
Puedes cambiar el CurrentCulture sobre el CurrentThread:
System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("es-ES");
Eso establece la cultura en "español de España", que usa punto de miles y coma para los decimales. Si no quieres cambiar la cultura por completo, también puedes manipular los componentes individuales del CultureInfo para modificar solo los separadores.
Ten presente que solo afecta a las funciones de conversión del Framework, tales como decimal.Parse o .ToString que usen el formato predeterminado. No afectará a componentes externos tales como llamadas a bases de datos o llamadas a servicios web, que seguirán usando el formato que tenga configurado dicho componente.
- Marcado como respuesta Efrain Mejias Castillo jueves, 7 de mayo de 2020 19:53
-
Hola Efrain Mejias Castillo,
conforme a la pregunta que hiciste te dejo un ejemplo en el cual puedes utilizar
NumberFormatInfo y tambien la documentacion para que puedas realizar especificamente
lo que quieres dependiendo de como se reciba la variable.
https://docs.microsoft.com/es-es/dotnet/api/system.globalization.numberformatinfo?view=netframework-4.7.2
using System;
using System.Globalization;
public class Program
{
public static void Main()
{
decimal numero = 1921651.16m;
NumberFormatInfo formato = new CultureInfo("es-AR").NumberFormat;
formato.NumberDecimalSeparator = ",";
Console.WriteLine(numero.ToString("N", formato));
}
}// output 1.921.651,16
- Editado Andres Aguilar MModerator jueves, 7 de mayo de 2020 17:09
- Marcado como respuesta Efrain Mejias Castillo jueves, 7 de mayo de 2020 19:53
Todas las respuestas
-
Puedes cambiar el CurrentCulture sobre el CurrentThread:
System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("es-ES");
Eso establece la cultura en "español de España", que usa punto de miles y coma para los decimales. Si no quieres cambiar la cultura por completo, también puedes manipular los componentes individuales del CultureInfo para modificar solo los separadores.
Ten presente que solo afecta a las funciones de conversión del Framework, tales como decimal.Parse o .ToString que usen el formato predeterminado. No afectará a componentes externos tales como llamadas a bases de datos o llamadas a servicios web, que seguirán usando el formato que tenga configurado dicho componente.
- Marcado como respuesta Efrain Mejias Castillo jueves, 7 de mayo de 2020 19:53
-
Hola Efrain Mejias Castillo,
conforme a la pregunta que hiciste te dejo un ejemplo en el cual puedes utilizar
NumberFormatInfo y tambien la documentacion para que puedas realizar especificamente
lo que quieres dependiendo de como se reciba la variable.
https://docs.microsoft.com/es-es/dotnet/api/system.globalization.numberformatinfo?view=netframework-4.7.2
using System;
using System.Globalization;
public class Program
{
public static void Main()
{
decimal numero = 1921651.16m;
NumberFormatInfo formato = new CultureInfo("es-AR").NumberFormat;
formato.NumberDecimalSeparator = ",";
Console.WriteLine(numero.ToString("N", formato));
}
}// output 1.921.651,16
- Editado Andres Aguilar MModerator jueves, 7 de mayo de 2020 17:09
- Marcado como respuesta Efrain Mejias Castillo jueves, 7 de mayo de 2020 19:53
-
Hola
Gracias por levantar tu consulta en los foros de MSDN. Cerraremos el Hilo, por ende si tiene alguna otra consulta por favor genera otra consulta para que la comunidad de foros te pueda asesorar.
Siempre es un placer atender tus consultas!
Gracias por usar los foros de MSDN.
Oscar Navarro