El checkbox y yo

Me las traigo con algunos controles en Visual Basic. La última pelea ha sido con el chekbox. El motivo, controlar que no se pueda marcar o desmarcar la opción cuando estoy en modo “Ver datos”. Con los demás controles (todos textboxes, maskedtextboxes, comboboxes y listboxes) lo había hecho controlando el evento Enter del GroupBox en el que se encuentran, de forma que, en modo “Ver datos”, todos los intentos de acceder a un control dentro del GroupBox eran desviado a otro control, en este caso un listbox, podía haber sido un botón de navegación, etc. El problema surgió porque al marcar o desmarcar un checkbox no se pasa por el evento Enter, ni del chekbox ni del control que lo contiene. Lo mismo pasa con el numericupdown o el datetimepicker, pero con esos no he conseguido aún dar con la tecla (tampoco he tenido que usarlos de un tiempo a esta parte).

La solución, sin embargo, ha sido fácil, ya que al marcar (o intentar marcar) el checkbox se produce el evento Click. Además, podemos controlar que un checkbox no se marque o desmarque automáticamente al pinchar sobre él a través de la propiedad AutoCheck. Por defecto, viene establecida en True, pero si la dejamos en False el checkbox no se marcará, da igual los clics, puñetazos o improperios que le dediquemos.

Lo que quedaría entonces es gestionar el evento Click de los checkboxes que sean y añadir algo de código como lo que sigue (Opciones es una enumeración que suelo usar en estos menesteres para controlar si estoy en altas, modificaciones, ver datos, etc.).

Dim MiCheckBox As CheckBox
If Me.OpcionElegida = Opciones.Nuevo OrElse _
        Me.OpcionElegida = Opciones.Modificar Then
    MiCheckBox = CType(sender, CheckBox)
    MiCheckBox.Checked = Not MiCheckBox.Checked
End If

En fin, una chorradita, pero no sé cuándo me va a volver a hacer falta y si me acordaré entonces. Por cierto, el extraño caso de FILEDIA volvió a ocurrir y menos mal que lo tenía anotado en el blog…

Deja un comentario