none
¿Establecer separador de miles y decimales en toda la aplicacion en Windows Form C#? RRS feed

  • 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


    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.

    jueves, 7 de mayo de 2020 16:51
    Moderador
  • 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


    jueves, 7 de mayo de 2020 17:09
    Moderador

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.

    jueves, 7 de mayo de 2020 16:51
    Moderador
  • 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


    jueves, 7 de mayo de 2020 17:09
    Moderador
  • 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

    viernes, 8 de mayo de 2020 13:41
    Moderador