La Web del Programador: Comunidad de Programadores
 
    Pregunta:  65 - COMO IMPEDIR PEGAR TEXTO EN UN CUADRO DE TEXTO
Autor:  Hernando
Quizás no he leído bien los manuales pero aquí va.
¿Como puedo hacer en Visual Basic para que un cuadro para ingresar texto no acepte alguna palabra guardada en el portapapeles? Es decir, impedir que yo "corte" desde algún documento una palabra y luego la "pege" en un cuadro de texto.

  Respuesta:  rafael sanchez
hola, creo que con las anteriores respuestas podrian pegarlas con el raton y punto, sin contar que use control+v para pegar, o algun boton especial de los teclados multimedia.
si quieres evitar q peguen algo que no sea tecleando, prueba lo siguiente:

Private Sub Text1_Change()
If Len(Text1.Text) > Len(Text1.Tag) + 1 Then Text1.Text = Text1.Tag
Text1.Tag = Text1.Text
End Sub

de esta forma solo podran pegar una unica letra o teclear una a una.
ten en cuenta que no puedes filtrar solo las letras, ya que impedirias usar el retroceso, el suprimir, inicio, tabulador, etc.
de esta forma, las demas teclas siguen funcionales, y puedes modificar el texto agregando o barrando letras (o palabras seleccionadas, puesto que solo anula si se introducen mas de una sola letra por vez, pero no las supresiones)

  Respuesta:  CHRISTIAN GONZALEZ
el cuadro de texto -TEXTBOX- posee una propiedad que se llama
LOCKED, figura tanto en tiempo de diseño como de ejecución
eso impide que se modifique el contenido del TEXT, ponela a True
cuando quieras evitar pegar algo y en False cuando si lo quieras. PUNTO.-

  Respuesta:  manuel Romero
para bloquear un cuadro de texto coloca la propiedad Locked igual a True

  Respuesta:  Manuel Camúñez Guijarro
Y digo yo... Porqué no usas una Etiqueta en lugar de Un Cuadro de Texto y PUNTO.

  Respuesta:  Roberto Morales
¡¡¡¡¡Tengo la solución!!!!!!:
coloca en el evento del texto el siguiente código
Text1_Click()

Clipboard.Clear

end sub
-Esto es para que al momento que den click en el cuado y deseen insertar el protapapeles no lo puedan hacer puesto que no existe, ahora que si no quieres que el portapapeles sea perdido, declara una variable de texto como publica, inserta esto:

x=Clipboard.GetText() ´ esto es para guardar el
´portapapeles en la variable y que no se pierda y luego
clipboard.clear´ esto es para borrar el portapapeles

  Respuesta:  LuisR
Se me ocurre una solucion muy sencilla para tu problema:
Private Sub TuCuadroDeTexto_GotFocus()
Clipboard.Clear
End Sub
Como antes de pegar hay que cortar en algún sitio, cunado se vuelva a TuCuadroDeTexto este recibe el Focus, se genera el evento GotFocus y ejecutará el código. Lo que no impedirás así es que se corte y pegue dentro de TuCuadroDeTexto, pero este no parece ser tu problema...

  Respuesta:  Ramón
He supuesto que si no quieres pegar texto procedente del portapapeles, no tienes ningún menú de ´pegar´ en tu aplicación, y por tanto la única manera de pegar texto es con las teclas SHIFT+INSERT. Para evitarlo puedes incluir el siguiente código en el evento ´KeyDown´ de tu cuadro de texto:
Sub CuadroDeTexto_KeyDown (KeyCode As Integer, Shift As Integer)
If Shift = 1 And KeyCode = 45 Then KeyCode = 0
End Sub
El evento ´KeyDown´ tiene dos par metros:
´KeyCode´, que es el código de la tecla pulsada (45 para ´INSERT´)
´Shift´, indica el estado de las teclas ´Shift´, ´Alt´, etc. (1 cuando ´Shift´ está pulsada´)
Si cuando se pulsa una tecla, igualas ´KeyCode´ a 0 (dentro del código del evento), tu programa ignora la pulsación de esa tecla. Por eso con el programa anterior puedes evitar que tu programa detecte la pulsación de SHIFT+INSERT.
Esto lo he hecho en VB3.0 y windows 3.11, y funciona correctamente. Espero que te sirva.

  Respuesta:  Juan De La Cruz
Dudo mucho que logres impedirlo, a menos que te metas con la cola de mensajes del Windows, pero si deseas evitarlo solo por el hecho de validar la entrada de datos, pues simple cuando suceda el evento change checas la información contenida y eliminas la basura!!!!