Formato en textbox

1,624 views
Skip to first unread message

Julián May

unread,
Jun 18, 2013, 4:16:32 PM6/18/13
to vfp-a-c...@googlegroups.com
Hola comunidad alguien podría ayudarme a darle formato a un textbox en c#

Resulta que quiero que los textbox solo puedan escribirse números 123456.56  pero formateado sería $123,456.56 y con el signo de precio 
No eh podido resolver este inconveniente donde habría que programar ?? 

Gracias y Saludos.

Francisco vera bravo

unread,
Jun 18, 2013, 4:25:02 PM6/18/13
to vfp-a-c...@googlegroups.com
por que mejor no ocupas un MaskedTextbox? y en la propiedad "Mask" están algunos formatos predefinidos, pero puedes utilizar otros creados por ti mismo y las validaciones que quieras


Saludos!


--
Has recibido este mensaje porque estás suscrito al grupo "C#.NET Latinoamérica" de Grupos de Google.
Visita este grupo en http://groups.google.com/group/vfp-a-csharpnet.
 
 

Analyzer

unread,
Jun 18, 2013, 4:34:53 PM6/18/13
to vfp-a-c...@googlegroups.com

Julián May

unread,
Jun 18, 2013, 4:40:49 PM6/18/13
to vfp-a-c...@googlegroups.com
Francisco ya probé con ello pero no cumple mis necesidades.
$999,999.99
si escribo de esa manera tengo que escribir todos los valores ..

Julián May

unread,
Jun 18, 2013, 4:44:58 PM6/18/13
to vfp-a-c...@googlegroups.com
Voy a probar analizer y te cuento con el zorro en un dos por tres se resuelve ello0 o.O

Julián May

unread,
Jun 18, 2013, 4:49:35 PM6/18/13
to vfp-a-c...@googlegroups.com
Ninguno me sirvió Analyzer =( 

Analyzer

unread,
Jun 18, 2013, 4:49:55 PM6/18/13
to vfp-a-c...@googlegroups.com
Bueno, no olvidar que también hay empresas que venden controles mejorados, pero obvio que son de pago:

Reto de programación: primer linea de grid para realizar consultas

Habría que checar en codeplex si hay controles mejorados tipo comunidad.

Saludos!


El 18 de junio de 2013 15:44, Julián May <md02...@gmail.com> escribió:

Analyzer

unread,
Jun 18, 2013, 4:52:39 PM6/18/13
to vfp-a-c...@googlegroups.com
Habría que buscar en los archivos del foro oficial a ver si por ahi hay pistas..



Saludos!

Analyzer

unread,
Jun 18, 2013, 4:55:06 PM6/18/13
to vfp-a-c...@googlegroups.com
Encontré esto:

floating.ToString("C", ci));           // Displays "C: $10,761.94"

Cadenas con formato numérico estándar

http://msdn.microsoft.com/es-es/library/dwhawy9k(v=vs.90).aspx


Saludos!

Julián May

unread,
Jun 18, 2013, 4:57:57 PM6/18/13
to vfp-a-c...@googlegroups.com
Pero es en tiempo de ejecución Analizer ?? .. voy a mirar ..

Analyzer

unread,
Jun 18, 2013, 5:00:06 PM6/18/13
to vfp-a-c...@googlegroups.com
Otro mas con vb.net 2010


Las funciones suelen ser las mismas, ya que los lenguajes .net usan el mismo framework.


Saludos!

Francisco vera bravo

unread,
Jun 18, 2013, 5:04:45 PM6/18/13
to vfp-a-c...@googlegroups.com
Mira esto!

double numero = Convert.ToDouble(txtNumero.Text);
lblMensaje.Text = numero.ToString("C3", CultureInfo.InvariantCulture);


Saludos!

Francisco vera bravo

unread,
Jun 18, 2013, 5:07:56 PM6/18/13
to vfp-a-c...@googlegroups.com
Era así perdón

lblMensaje.Text = numero.ToString("C3", CultureInfo.CreateSpecificCulture("en-US"));

debes importar la librería using System.Globalization;

Julián May

unread,
Jun 18, 2013, 5:11:36 PM6/18/13
to vfp-a-c...@googlegroups.com

Ok probare y comento.

El 18 de junio de 2013 15:25, Francisco vera bravo <francisco...@gmail.com> escribió:

Robert Martinez

unread,
Jul 3, 2013, 11:29:10 AM7/3/13
to vfp-a-c...@googlegroups.com
Saludos,

Creo que lo que buscas hacer con el formato del textbox numérico se puede solucionar perfectamente con esto, bien podría crear una clase para que no tenga que ponerlo en cada control y agregar en la clase la propiedad tbFormat = "###,###,###.00", de esta manera, ademas de poder reusarlo y ahorrar una enorme cantidad de codificación, también podemos ir agregando funcionalidades y continuar adaptando el formato.

  private void textBox1_KeyPress(object sender, KeyPressEventArgs e)

        {

            char ch = e.KeyChar;

            TextBox tb = sender as TextBox;

            string tbFormat = "$ ###,###,###.00" as String;

            string[] tbFmParts = tbFormat.Replace(",", "").Split('.').replace("$","") as string[];

            int lenEntero = 16;

            int lenDecimal = 0;

 

            //Determina la Longiktud del calor en la parte entera y en la decimal.

            if (tbFmParts.Length >0)

            {   lenEntero = tbFmParts[0].Length;

                if (tbFmParts.Length >1)

                {

                    lenDecimal = tbFmParts[1].Length;

 

                }

            }

 

            //Controlar que no se teclee mas de un punto decimal.

            if ((ch == 46) && (tb.Text.IndexOf('.') != -1)) { e.Handled = true; }  

 

            //Controla que solo acepte números

            if (!Char.IsDigit(ch) && ch != 8 && ch != 46)  { e.Handled = true; }

 

            //Controlar longitud del valor tecleado

            if (Char.IsDigit(ch) || ch==46)

            {  string result = tb.Text.Substring(0, tb.SelectionStart)

                                 + e.KeyChar

                                 + tb.Text.Substring(tb.SelectionStart

                                 + tb.SelectionLength);

 

                string[] parts = result.Split('.') as string[];

 

                if (parts.Length > 0)

                {

                    // Controlar la cantidad de números enteros tecleado.

                    if (parts[0].Length > lenEntero) { e.Handled = true; }

 

                    if (parts.Length > 1)

                    {

                        // Controlar la cantidad de decimales tecleado.

                        if (parts[1].Length > lenDecimal) { e.Handled = true; } 

                    }

                }

 

            }

 

        }

 

        private void textBox1_Leave(object sender, EventArgs e)

        {

            TextBox tb = sender as TextBox;

            Double valor = Convert.ToDouble(tb.Text);

            String tbFormat = "$ ###,###,###.00" as string;

 

            tb.Text = valor.ToString(tbFormat);

 

        }

 

        private void textBox1_Enter(object sender, EventArgs e)

        {

            TextBox tb = sender as TextBox;

            tb.Text = tb.Text.Replace(",","").Replace("$",""); 

        }

 


Alexander Cárdenas

unread,
May 22, 2017, 1:13:42 PM5/22/17
to C#.NET Latinoamérica, vfp-a-c...@googlegroups.com, francisco...@gmail.com
Buen día Francisco, tengo una pregunta, esto debo colocarlo en el evento del textBox o en un método aparte?
Gracias
Reply all
Reply to author
Forward
0 new messages