none
Bloquear en un textbox el copiar y pegar RRS feed

  • Pregunta

  • Hola estoy validando un formulario y algunos textbox bloquear el copiar/pegar dentro del textbox tengo la siguiente funcion que me deja ingresar los caracteres que yo quiero.. esta es la funcion..

     

    Public Shared Function CaracteresProyecto(ByVal KeyAscii As Integer) As Integer

    KeyAscii = Asc(UCase(Chr(KeyAscii)))

    'Transformar letras minusculas a Maysculas

     

    ' Intercepta un cdigo ASCII recibido admitiendo solamente

     

    ' letras, adems:

     

    ' deja pasar sin afectar si recibe tecla de Backspace o enter

     

    If InStr("0123456789-", Chr(KeyAscii)) = 0 Then

    CaracteresProyecto = 0

     

    Else

    CaracteresProyecto = KeyAscii

     

    End If

     

    ' teclas adicionales permitidas

     

    If KeyAscii = 8 Then CaracteresProyecto = KeyAscii ' Backspace

     

    If KeyAscii = 13 Then CaracteresProyecto = KeyAscii ' Enter

     

    End Function

     

    asi la llamo en el evento keypress

     

    Private Sub TxtNombres_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtNombres.KeyPress

     

    Dim KeyAscii As Short = CShort(Asc(e.KeyChar))

    KeyAscii =

    CShort(ClassValidaciones.SoloLETRAS(KeyAscii))

     

    If KeyAscii = 0 Then

    e.Handled =

    True

     

    Me.ErrorCliente.SetError(Me.TxtNombres, "Ingrese solo letras numeros y -"

     

    Else

     

    Me.ErrorCliente.SetError(Me.TxtNombres, "")

     

    End If

     

    End Sub

    pero cuando copio un texto con letrar igual me copia letras.

    sábado, 6 de noviembre de 2010 23:28

Respuestas

  • hola

    no has probado lo consejos de esta otro consulta

    http://social.msdn.microsoft.com/forums/en-US/vbide/thread/1bf46245-4696-44f0-ab36-5fb51cb546cd/

     

    aqui se marcan dos tecnicas que podrias aplciar

    - asignar la propiedad ReadOnly del control

    - asignar la propiedad

    ShortcutsEnabled

    en false

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    domingo, 7 de noviembre de 2010 1:23

Todas las respuestas

  • Pienso que podrías usar una subclase de tu textbox en donde reescribas el wndproc(). Algo así,

    Public Partial Class MiTexto
    	Inherits TextBox
    	Private Const WM_COPY As Integer = &H301
    	Private Const WM_PASTE As Integer = &H302
    
    	Public Sub New()
    		InitializeComponent()
    	End Sub
    
    	<System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name := "FullTrust")> _
    	Protected Overloads Overrides Sub WndProc(ByRef m As Message)
    		Select Case m.Msg
    			Case WM_PASTE, WM_COPY
    				Return
    		End Select
    		MyBase.WndProc(m)
    	End Sub
    
    End Class
    
    
    • Propuesto como respuesta Gailisis Dawsons domingo, 7 de noviembre de 2010 23:58
    domingo, 7 de noviembre de 2010 0:33
  • hola

    no has probado lo consejos de esta otro consulta

    http://social.msdn.microsoft.com/forums/en-US/vbide/thread/1bf46245-4696-44f0-ab36-5fb51cb546cd/

     

    aqui se marcan dos tecnicas que podrias aplciar

    - asignar la propiedad ReadOnly del control

    - asignar la propiedad

    ShortcutsEnabled

    en false

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    domingo, 7 de noviembre de 2010 1:23