• Viernes 1 de Noviembre de 2024, 13:24

Autor Tema:  ¿Como inserto un solo punto en un textbox?  (Leído 7449 veces)

correoteca

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
¿Como inserto un solo punto en un textbox?
« en: Sábado 5 de Diciembre de 2009, 01:33 »
0
Hola que tal.

Mi duda es la siguiente:

Como puedo insertar un solo punto decimal en un textbox.
Con este código logro que solo acepte números y el punto, pero no puedo escribir solo uno y de esta manera me marca un error.

Citar
private void textBox_KeyPress(object sender, KeyPressEventArgs e)
{
if ((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8 && e.KeyChar != '.' //También e.KeyChar != 46')
{
e.Handled = true; //
}
}

Se aceptan todo tipo de soluciones.

Gracias por leer mi tema.

pedroqv

  • Miembro activo
  • **
  • Mensajes: 55
    • Ver Perfil
Re: ¿Como inserto un solo punto en un textbox?
« Respuesta #1 en: Sábado 5 de Diciembre de 2009, 02:35 »
0
Una solucion que a mi se me viene a la mente es utilizar una bandera la cual va tener el estado false o true si se puso un punto.


bool bandera = true;
private void textBox_KeyPress(object sender, KeyPressEventArgs e)
{
if ((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8 )
{

if (e.KeyChar=='.' && bandera )
{
        bandera = false;   //ya no acepta otro punto
}

e.Handled = true; //
}
}

lugarda

  • Miembro activo
  • **
  • Mensajes: 52
  • Nacionalidad: co
    • Ver Perfil
Re: ¿Como inserto un solo punto en un textbox?
« Respuesta #2 en: Miércoles 23 de Junio de 2010, 20:06 »
0
Hola, hice un pequeño cambio en la solucion de pedroqv y funciona perfecto. Espero te sirva de ayuda
Código: C#
  1.  
  2. if (!char.IsDigit(en.KeyChar) && en.KeyChar != (char)Keys.Back && en.KeyChar != 46)
  3.                 en.Handled = true;
  4.             else if (en.KeyChar == 46 )
  5.             {
  6.                 if (banderaPunto)
  7.                 {
  8.                     banderaPunto = false;
  9.                 }
  10.                 else en.Handled = true;
  11.             }
  12.  
  13.  


Cita de: "pedroqv"
Una solucion que a mi se me viene a la mente es utilizar una bandera la cual va tener el estado false o true si se puso un punto.


bool bandera = true;
private void textBox_KeyPress(object sender, KeyPressEventArgs e)
{
if ((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8 )
{

if (e.KeyChar=='.' && bandera )
{
        bandera = false;   //ya no acepta otro punto
}

e.Handled = true; //
}
}