Solo Números en Textbox

26/12/2005 - 14:51 por solusoft | Informe spam
Hola, tengo una aplicación WinForms con un textbox que sólopuede admitir
números (0..9).

La cuestión es que tengo un evento KeyPress para impedir que se introduzcan
letras o cualquier otro caracter. Ctrl + V también se impide.

El caso que si copio un texto y lo pego con el ratón (menú emergente al
pulsar botón derecho) me copia el texto en el textbox. Es posible evitarlo de
alguna forma ?

He visto que el evento MouseDown no me sirve para cancelar esa acción del
botón, sólo me indica información del botón pulsado, X, Y, Clicks

Saludos cordiales.

Preguntas similare

Leer las respuestas

#1 Guillermo guille
26/12/2005 - 15:16 | Informe spam
Lo único que se me ocurre es que en el evento TextChanged vuelvas a
comprobar si el contenido son los dígitos que quieres, y de no ser así, no
aceptes los caracteres, aunque eso supondría volver a cambiar el contenido
del textbox, por tanto deberías evitar la reentrada mientras se está dentro
del evento, para que el cambio que realices no produzca un evento en
cascada.

Otra solución es que crees un contextmenu que tenga un menú invisible y lo
asignes al contextmenu de la caja de textos, pero eso hará que ni puedas
copiar ni pegar ni nada con el menú contextual.

Nos vemos.
Guillermo
Microsoft VB MVP desde 1997
Mentor Asociado de Solid Quality Learning Iberoamericana

Te recuerdo que puedes entrar en mi sitio desde:
http://www.elguille.info/ y http://www.mundoprogramacion.com/
(además de http://www.elguille.org/)

"solusoft" escribió en el mensaje
news:
Hola, tengo una aplicación WinForms con un textbox que sólopuede admitir
números (0..9).

La cuestión es que tengo un evento KeyPress para impedir que se
introduzcan
letras o cualquier otro caracter. Ctrl + V también se impide.

El caso que si copio un texto y lo pego con el ratón (menú emergente al
pulsar botón derecho) me copia el texto en el textbox. Es posible evitarlo
de
alguna forma ?

He visto que el evento MouseDown no me sirve para cancelar esa acción del
botón, sólo me indica información del botón pulsado, X, Y, Clicks

Saludos cordiales.
Respuesta Responder a este mensaje
#2 Guerrero
26/12/2005 - 15:26 | Informe spam
Puedes utilizar el evento TextChanged y intentar parsear el valor del textbox
a entero si lanza una excepcion borrar el contenido del textbox. Ej:

using System;
using System.Windows.Forms;

class t : Form{

public static void Main(){
Application.Run(new t());
}
public t(){
TextBox tb = new TextBox();
tb.TextChanged += new EventHandler(this.manejador);
Controls.Add(tb);
}
private void manejador(object sender, EventArgs e){
TextBox tb = sender as TextBox;
try{
if(tb.Text.Length > 0){
int res = int.Parse(tb.Text);
if(res > 0 & res < 10){
// ok
}
}
}
catch(FormatException ex){
MessageBox.Show("Introduzca un numero");
tb.Text = string.Empty;
}
}
}


"solusoft" escribió:

Hola, tengo una aplicación WinForms con un textbox que sólopuede admitir
números (0..9).

La cuestión es que tengo un evento KeyPress para impedir que se introduzcan
letras o cualquier otro caracter. Ctrl + V también se impide.

El caso que si copio un texto y lo pego con el ratón (menú emergente al
pulsar botón derecho) me copia el texto en el textbox. Es posible evitarlo de
alguna forma ?

He visto que el evento MouseDown no me sirve para cancelar esa acción del
botón, sólo me indica información del botón pulsado, X, Y, Clicks

Saludos cordiales.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida