domingo, 24 de febrero de 2008

Winforms. Poner un ComboBox en modo "sólo lectura"

Una de winforms.

Ante la inexistencia de una propiedad ReadOnly en el ComboBox, análoga al del TextBox, la única solución para bloquear la entrada de un usuario en un combo es usar el enabled=false, lo que provoca efectivamente que el control no admita entradas pero que tampoco admita ser leído con claridad. Que al ponerse gris no se ve una mierda, vaya.

Pues nada, a montarse una pajilla mental de cómo simular el ReadOnly del TextBox en un ComboBox:

Private Sub proteger()
  ComboBox1.DropDownStyle = ComboBoxStyle.Simple
  AddHandler ComboBox1.KeyDown, AddressOf Me.DesactivarTeclas
End Sub

Private Sub desproteger()
    ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList
    RemoveHandler ComboBox1.KeyDown, AddressOf Me.DesactivarTeclas
End Sub

Private Sub DesactivarTeclas(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs)
    e.SuppressKeyPress = True
End Sub


Cuidado si en el formulario hay eventos asociados a la pulsación de teclas, caso en el que habría que personalizar la aplicación del suppressKeyPress en el procedimiento DesactivarTeclas.

2 comentarios:

Anónimo dijo...

muy bueno hace rato que anda buscando algo asi para los combobox .... gracias...

Anónimo dijo...

Perfecto!

Muchas gracias!!