Comunidad Gambas-es
Evitar que se escriba más de un carácter al dejada pulsada una tecla - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: General (https://gambas-es.org/forum-4.html)
+--- Tema: Evitar que se escriba más de un carácter al dejada pulsada una tecla (/thread-1577.html)



Evitar que se escriba más de un carácter al dejada pulsada una tecla - Shell - 17-12-2023

Buenas!.

En este ejemplo tenemos tres textboxes que comparten código y manipulador de evento.
Solo se puede escribir un carácter y este no se repite, aunque dejes pulsada la tecla.
Intenta dejar el dedo sobre la tecla a ver que pasa. Ah, claro, selecciona antes un textbox. Rolleyes

Código:
Private change As Boolean

Public Sub Form_Open()

  Dim cajadetexto As TextBox

  With Me
    .Arrangement = Arrange.Vertical
    .Spacing = True
    .Margin = True
    .Centered = True
    .Title = "Deja pulsada la tecla"
  End With

  For i As Integer = 0 To 2
    cajadetexto = New TextBox(Me) As "CajadeTexto"
    With cajadetexto
      .Height = 42
      .Width = 385
      .Font.Size = 18
    End With
  Next

  change = True

End

Public Sub CajadeTexto_Change()

  'Cada vez que cambia el contenido de la caja de texto
  If change Then Last.ReadOnly = True
  change = False
  Me.Title = "No puedes"

End

Public Sub CajadeTexto_KeyRelease()

  'Cada vez que levantas el dedo de la tecla
  change = True
  Last.ReadOnly = False
  Me.Title = "Deja pulsada la tecla"

End

¿ Lo lograrías de otra forma ?.
 

Debilidad 1.

Si dejas pulsado y cambias de textbox....no funciona

Saludos


RE: Evitar que se escriba más de un carácter al dejada pulsada una tecla - Shell - 17-12-2023

Creo que con esto se soluciona. Se le añade al código lo siguiente:

Código:
.....
Public Sub CajadeTexto_MouseDown()
 'Al cambiar de caja de texto usando el ratón
  change = True
  Last.ReadOnly = False
 
End