Datetime: Wie werde ich behandeln, wenn der Benutzer geklickt hat / die gewählte Datum im Popup-Kalender oder nicht?
-
07-07-2019 - |
Frage
bemerkte ich, dass C # 's Datetimepicker das Datum automatisch ändert, wenn ich Monat oder Jahr bin zu ändern. Also, was ich tat, ist das Value außer Kraft zu setzen, und es wird nur ausgelöst, wenn das CloseUp Ereignis ausgelöst wird.
Das Problem ist jetzt, ich ein Ereignis benötigen, wenn der Benutzer Datum im Kalender tatsächlich ausgewählt oder klickt der Benutzer außerhalb der Kontrolle.
Können Sie mir dabei helfen? Danke:)
Lösung
In einer abgeleiteten Klasse, die überschriebenen OnValueChanged
Methode für mich gut funktioniert.
public class MyDateTimePicker : DateTimePicker
{
// ... some stuff
protected override void OnValueChanged(EventArgs eventargs)
{
System.Diagnostics.Debug.Write("Clicked - ");
System.Diagnostics.Debug.WriteLine(this.Value);
base.OnValueChanged(eventargs);
}
protected override void OnCloseUp(EventArgs eventargs)
{
System.Diagnostics.Debug.Write("Closed - ");
System.Diagnostics.Debug.WriteLine(this.Value);
base.OnCloseUp(eventargs);
}
// some more stuff ...
}
Andere Tipps
In einer abgeleiteten Klasse, die überschriebenen OnCloseUp
Methode funktioniert, weil, wenn Sie die Datetime-Steuerung zurückgesetzt, das ValueChange
Ereignis wird nicht ausgelöst, so dass das CloseUp
Ereignis ist praktisch.
void ProductionDateSchdl_CloseUp(object sender, EventArgs e)
{
this.ProductionDateSchdl.CustomFormat = "MM/dd/yyyy";
ProductionDate = Convert.ToDateTime(this.ProductionDateSchdl.Value);
}