viernes, 17 de abril de 2015

La locura del DateTimePicker


Tenemos un DateTimePicker con la propiedadad ShowCheckBox a true

DateTimePicker1.ShowCheckBox = True

Estamos en el 2015, si en el load del DateTimePicker pongo lo siguiente


    DateTimePicker1.Checked = False
        DateTimePicker1.Value = "17/10/2014"
        DateTimePicker1.ShowCheckBox = False
        DateTimePicker1.Enabled = False
¿Qué valor se muestra?

Pues el dia de hoy

Lo modificamos un poquito, no mucho


        DateTimePicker1.Checked = True
        DateTimePicker1.Value = "17/10/2014"
        DateTimePicker1.ShowCheckBox = False
        DateTimePicker1.Enabled = False


Otro cambio, mira el ejemplo 1


    DateTimePicker1.Checked = False
        DateTimePicker1.Enabled = False
        DateTimePicker1.Value = "17/10/2014"


El check está marcado?? Cuando he dicho que no lo estuviera


Para que saliera desmarcado tendría que poner


        DateTimePicker1.Enabled = False
        DateTimePicker1.Value = "17/10/2014"
        DateTimePicker1.Checked = False

Es un poco locura, estamos hablando de un propiedad que no parezca que tenga tanta implicación en su funcionalidad y si lo tienen

Lo peor de todo, esto es que también pasa con el evento OnValueChanged  si la primera vez que desmarcas el check no se llama al evento, prueba a poner Checked a true antes de asignarle valor


Esto es fácil si únicamente nos fijamos en la propiedad Value, porque si lo que modificas en la propiedad Text  las combinaciones se multiplican

Consejos :
1. Lo primero de todo si vas a tener un checkbox en el DateTimePicker: marca la propiedad Checked = true
2. Usa la propiedad Value: por lo menos te dirá lo que tiene el control de verdad, no el valor que se muestra en pantalla, según tengas o no activo el check

Nota:  para Windows Form Framework 4.0

No hay comentarios:

Publicar un comentario