2009-10-23 18 views
7

Wir haben ein paar DateTimePickers für ein benutzerdefiniertes Benutzersteuerelement in einem Formular. Sie sind sichtbar, aber nicht aktiviert (nur für Anzeigezwecke). Wenn das UserControl geladen wird, werden den DateTimePickers Werte von einem DataRow zugewiesen, das von einem DataSet stammte, das einen einzelnen Datensatz speichert, der von einer gespeicherten SQL Server-Prozedur zurückgegeben wird.DateTimePicker zeigt das heutige Datum anstelle des tatsächlichen Werts an

Es gibt ein inkonsistentes Verhalten, bei dem die Benutzer manchmal das heutige Datum anstelle des Datums sehen, das dem DateTimePicker zugewiesen wurde. Es scheint keine Rolle, ob ich das Datum ordne ich an der .Value Eigenschaft will oder die .Text Eigenschaft:

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

ich, dass die beiden Aussagen erwarte über die man die Value-Eigenschaft mit geeigneter ist . In beiden Fällen wird das aktuelle Datum dem Benutzer angezeigt, unabhängig von den Werten in der Datenbank. Im Falle von txtstart.Value zeigt Visual Studio mir, dass der Wert wie erwartet zugewiesen wurde. Also, warum zeigt es dem Benutzer dieses Datum anstelle des heutigen Datums an?

+1

Wenn der DateTimePicker einen leeren oder Null-Wert ermittelt, wird das heutige Datum angezeigt. – Stewbob

+3

Nun, wenn der DateTimePicker * immer * deaktiviert ist, warum nicht stattdessen ein Textfeld verwenden? – abhilash

+0

Eigentlich habe ich diese auf Textfelder umgestellt, da ich nicht feststellen konnte, warum ein deaktiviertes Steuerelement überhaupt vorhanden war. Aber der Punkt bleibt. Wenn ich einem DateTimePicker im Code einen Wert zuweise, ist das der Wert, den ich zur Laufzeit erwarten würde. – reverendlarry

Antwort

0

Ich endete mit AB Nolans Vorschlag. Der Grund für einen deaktivierten DateTimePicker war mir nie klar, also habe ich am 23.10.2009 anstatt die Steuerung fortzusetzen, nur die Daten angezeigt, die ich in TextBoxes haben wollte.

0

Es scheint ein Problem mit mehreren DateTimePickers zu sein. Ich konnte das Problem (Bug?) Umgehen, indem ich die DateTimePickers mit den gewünschten Werten programmatisch erstellte und sie dem Formular hinzufügte.

0

Ich fand heraus, was das Grundproblem hier war, answered it here auf eine ähnliche Frage, wenn Sie noch wissen wollten.

+0

Ich bin mir nicht sicher, ob das auf meine ursprüngliche Situation zutrifft. Die DateTimePickers in meinem Beispiel waren wie angegeben sichtbar, aber Enabled war falsch. – reverendlarry

13

Ich fand die Antwort. Sie MÜSSEN den Checkbox-Wert auf checked setzen, um einen Nicht-Null-Wert anzugeben.

this.dateSold.Checked = true; // wie gewünscht auf wahr oder falsch setzen this.dateSold.ShowCheckBox = false;

+0

Als der Fragesteller der Frage, kann ich nicht wirklich bestätigen, ob das wahr ist, da ich am Ende AB Kolans Vorschlag folgte und nur Textbox verwendete. Aber wenn das für jemand anderen funktioniert, dann großartig. – reverendlarry

+1

Ich bestätige, dass die Checked-Eigenschaft das Problem zu sein scheint. Es kann einen Wert von "false" enthalten, obwohl es im Designer auf "true" gesetzt wurde. –

0

Ich hatte auch Probleme mit diesem und festgestellt, dass Sie in der Tat den .Checked Wert auf True setzen müssen.

Ich legte die Checked-Eigenschaft im Eigenschaftenfenster und es funktionierte immer noch nicht, also habe ich es nur in Code vor dem Zuweisen des Werts und das Problem behoben.

Verwandte Themen