DateTimePicker automatisch zum nächsten datepart
Derzeit, wenn mithilfe der datetimepicker, nachdem Sie geben Sie den Monat ein, müssen Sie entweder auf den rechts-Pfeil oder den "/" für Bewegung in den Tag. Ist es eine Eigenschaft, die ich einstellen kann oder ein Weg, zu wissen, dass der Monat fertig ist und verschieben auf den Tag, und verschieben Sie auf das Jahr, nachdem der Benutzer fertig ist mit dem Tag? Dies ist das gleiche Verhalten mit Anwendungen in der alten FoxPro/Clipper Tage.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als @Wael Dalloul sagt, es ist keine Eigenschaft, zu tun, was Sie wollen. Nach viel Gefummel und Spy++ arbeiten, und ich kam auf folgende Lösung:
Erben von
System.Windows.Forms.DateTimePicker
und deklarieren private Felder für flags:Definition von Konstanten und Strukturen für Win-API:
Es ist auch notwendig, um eine using-Anweisung für
System.Runtime.InteropServices
um Win-API.Überschreiben
OnKeyDown
und setzen oder löschen Sie ein flag, basierend auf, wenn die Taste gedrückt wurde eine Anzahl (und klar, das zweite flag unten).Überschreiben
WndProc
- und trap-dieWM_REFLECT+WM_NOTIFY
Nachricht, extrahieren Sie dieNMHDR
auslParam
, dann legen Sie eine weitere Markierung auf, wenn der code -759 (dieses Ereignis wird ausgelöst, nachdem Sie eines der Felder ist komplett gefüllt mit der Tastatur und ein Datum ausgewählt ist).Überschreiben
OnKeyUp
und wenn beide flags gesetzt sind, und die-Taste gedrückt wurde, eine Nummer manuell aufrufenbase.WndProc
mit einemWM_KEYDOWN
gefolgt von einemWM_KEYUP
mitKeys.Right
, dann löschen Sie Ihre Fahnen. Sie können dielParam
diese Nachrichten auf 0 und Sie sich keine sorgen machen, undHWnd
ist natürlichthis.Handle
.Entschuldigung für den Mangel an Leerzeilen in den code, aber es würde nicht die Anzeige rechts mit den leeren Zeilen, so nahm ich Sie heraus. Vertrauen Sie mir, dies ist die besser lesbare version.
Wird es funktionieren auf winforms datetimepicker
on value change-Ereignis, fügen Sie folgenden code
Gibt es keine Eigenschaft zu machen, arbeiten, wie das, was Sie wollen, ich glaube, Sie haben zu handhaben keypress-Ereignis und mache es per code.