2009-10-23 31 views
7

Tenemos un par de DateTimePickers en un UserControl personalizado, en un formulario. Son visibles, pero no están habilitados (solo para fines de visualización). Cuando se carga UserControl, a DateTimePickers se le asignan valores de un DataRow que proviene de un DataSet que almacena un solo registro devuelto por un procedimiento almacenado de SQL Server.DateTimePicker muestra la fecha de hoy en lugar de mostrar su valor real

Existe un comportamiento incoherente en el que los usuarios a veces ven la fecha de hoy en lugar de la fecha que se asignó a DateTimePicker. No parece importar si le asigno la fecha Quiero la propiedad .Value o la propiedad .Texto:

txtstart.Value = (DateTime) dr["Group_Start_Date"]; 
txtend.Text = dr["Term_Date"].ToString(); 

espero que la de los dos enunciados anteriormente, el uso de la propiedad Value es más apropiado . Pero, en ambos casos, la fecha de hoy se muestra al usuario, independientemente de los valores que estaban en la base de datos. En el caso de txtstart.Value, Visual Studio me muestra que el valor se asignó como se esperaba. Entonces, ¿por qué no muestra esa fecha al usuario en lugar de la fecha de hoy?

+1

Si DateTimePicker emite un valor vacío o nulo, se mostrará la fecha de hoy. – Stewbob

+3

Bueno, si DateTimePicker está * siempre * deshabilitado, ¿por qué no usar un cuadro de texto en su lugar? – abhilash

+0

En realidad los he cambiado a cuadros de texto, ya que no pude determinar por qué había un control deshabilitado allí en primer lugar. Pero el punto permanece. Si asigno un valor a DateTimePicker en el código, ese es el valor que espero ver en tiempo de ejecución. – reverendlarry

Respuesta

0

Terminé con la sugerencia de AB Nolan. El razonamiento detrás de un DateTimePicker deshabilitado nunca fue claro para mí, por lo tanto, el 23/10/2009, en lugar de seguir presionando con el control, solo mostraba las fechas que quería en TextBoxes.

0

Parece ser un problema con tener múltiples DateTimePickers. Pude solucionar el problema (¿error?) Creando programáticamente DateTimePickers con los valores que quería y agregándolos al formulario.

0

Descubrí cuál era el problema de raíz aquí, answered it here en una pregunta similar si todavía querían saber.

+0

No estoy seguro de si eso se aplica a mi situación original. Los DateTimePickers en mi ejemplo eran visibles como se indica, pero Enabled era falso. – reverendlarry

13

Encontré la respuesta. DEBE configurar el valor de la casilla de verificación para marcar para indicar un valor no nulo.

this.dateSold.Checked = true; // establecido en verdadero o falso, como se desee this.dateSold.ShowCheckBox = false;

+0

Como investigador de la pregunta, realmente no puedo confirmar si esto es cierto ya que terminé siguiendo la sugerencia de AB Kolan y simplemente usando el cuadro de texto. Pero si esto funcionó para otra persona, entonces genial. – reverendlarry

+1

Confirmo que la propiedad 'Comprobada' parece ser el problema. Puede contener un valor de 'false' aunque se estableció en' true' en el diseñador. –

0

Estaba teniendo problemas con esto también y descubrí que de hecho necesita establecer el valor .Checked en True.

Establecí la propiedad Checked en la ventana de propiedades y todavía no funcionaba, así que lo configuré en el código antes de asignar el valor y eso solucionó el problema.

Cuestiones relacionadas