Como bloquear el "copiar/pegar" en un textBox

Hengo varios textBox que solo aceptan números y otros que solo aceptan letras, la cuestión es que en aquellos que aceptan solo números puedo agregar letra copiando desde aquellos que acepten letras y después pegando en los mismos y viceversa.
De esta manera puedo ingresar números en aquellos TextBox que no los debería permitir
¿De qué manera podría validar el TextBox para que no me permita aceptar el pegar?

2 Respuestas

Respuesta
1
Amm pues te doy un ejemplo usando el código Ascii para saber si se presiona "ctrl+c" y "ctrl+v" haciendo que valide los textbox y no deje realizar las funciones de copiar y pegar, el código es el siguiente:
Private Sub Form_Load()
     Me.Caption = "Evitar copiar y pegar"
     Me.Label1.Caption = "Ingresa un texto:"
     Me.Label2.Caption = "Copia y Pega el texto->"
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
     If KeyAscii = 22 Then
          MsgBox "No Puedes Copiar/Pegar", vbCritical, "Error"
          KeyAscii = 0
          Exit Sub
     End If
     If KeyAscii = 3 Then
          MsgBox "No Puedes Copiar/Pegar", vbCritical, "Error"
          KeyAscii = 0
          Exit Sub
     End If
End Sub
Private Sub Text2_KeyPress(KeyAscii As Integer)
     If KeyAscii = 22 Then
          MsgBox "No Puedes Copiar/Pegar", vbCritical, "Error"
         KeyAscii = 0
         Exit Sub
     End If
     If KeyAscii = 3 Then
         MsgBox "No Puedes Copiar/Pegar", vbCritical, "Error"
         KeyAscii = 0
         Exit Sub
    End If
End Sub
Gracias por la ayuda, pero no sé donde usar las funciones.
Al seleccionar un texto desde otra fuente como por ejemplo el Word, copiarlo e ir al TextBox y hacer clic derecho y seleccionar pegar ¿También funcionaria así?
Uso Visual Basic .Net 2008
Gracias de nuevo
Amigo pues el código este que te di esta en visual basic 6.0 pero conseguí algo que tal vez te pueda ayudar a resolver tu problema, amm el vb.net 2008 no lo he manejado mucho pero en lo que te pueda ayudar nada más avisame.
Este ejemplo desactiva el botón derecho del ratón de una de las ventanas creadas por microsoft Visual Basic. Para probar el ejemplo sigue los siguientes pasos:
1. Cree un nuevo proyecto de tipo "Exe estándar".
2. Añada un nuevo módulo (. VAS) y agréguele el nombre de "HookMod".
Renombre el formulario creado por defecto a "HookForm".
3. Añada dos CommandButton y un Textbox. Los CommandButton deben
tener las siguientes propiedades:
Command1 Name: BtnHook
Caption: Hook
Command2 Name: BtnUnHook
Caption: UnHook
4. En el formulario copie el siguiente código:
Private Sub BtnHook_Click()
PonerHook
End Sub
Private Sub BtnUnHook_Click()
QuitarHook
End Sub
5. En el módulo de la aplicación copie el siguiente código:
Declare Function SetWindowsHookEx Lib "user32" Alias _
"SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As_
Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Declare Function UnhookWindowsHookEx Lib "user32" (ByVal_
Hhook As Long) As Long
Declare Function CallNextHookEx Lib "user32" (ByVal Hhook As_
Long, ByVal ncode As Long, ByVal wParam As Long, lParam As_
Any) As Long
Declare Function GetWindowThreadProcessId Lib "user32"_
(ByVal hwnd As Long, lpdwProcessId As Long) As Long
Public Const WH_MOUSE = 7
Public Const HC_NOREMOVE = 3
Public Const WM_NCRBUTTONDOWN = &HA4
Public Const WM_RBUTTONDOWN = &H204
Global Hhook As Long 'Identificador del hook
' Función callback
Public Function MouseProc(ByVal uMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
If uMsg < 0 Then
MouseProc = CallNextHookEx(Hhook, uMsg, wParam, lParam)
End If
' Se comprueba si el mensaje es el botón derecho del ratón
' Si es así se ignora y se produce un beep
' De lo contrario se da la oportunidad a otros hooks de
procesar el mensaje.
If uMsg <> HC_NOREMOVE And (wParam = WM_RBUTTONDOWN Or _
wParam = WM_NCRBUTTONDOWN) Then
Beep
MouseProc = 1
Else
MouseProc = CallNextHookEx(Hhook, uMsg, wParam, lParam)
End If
End Function
Public Sub PonerHook()
Hhook = SetWindowsHookEx(WH_MOUSE _ ' Hook de ratón
, AddressOf MouseProc _ ' Dirección de la función callback
, 0 ' Handle del módulo
, GetWindowThreadProcessId(HookForm.hwnd, 0)) ' Id del
' thread que creó la ventana
End Sub
Public Sub QuitarHook()
UnhookWindowsHookEx Hhook
End Sub
6. Para probar el ejemplo, pulse el botón derecho del ratón sobre
el TextBox. Comprobará que aparece un menú contextual. Pulse a
continuación el botón en el que pone Hook. Haga clic con el
botón derecho del ratón sobre el TextBox. Comprobará que ya no
aparece el menú contextual y en su lugar suena un pitido. Para
desinstalar el hook pulse en el botón UnHook.
NOTA: En Visual Basic sólo se pueden instalar hooks para ventanas
creadas dentro de la aplicación, ya que para establecer un hook en una
ventana creada por un proceso diferente, la función filtro o callback
debe de estar en una DLL. Las DLLs creadas por Microsoft Visual Basic
no sirven para crear hooks.
Prueba esto y después veremos que pasa si no te sale me avisas mandándome un correo a [email protected], con gusto aclarare tus dudas.
Respuesta

Para evitar que el TextBox te acepte Ctrl+V —pegar— solo pon la propiedad ShortcutEnabled del text box en false. No necesitas código para nada.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas