Wie man einen DateTimePicker am Mausrad inkrementiert / dekrementiert

8

Wenn Sie ein DateTimePicker-Steuerelement hinzufügen, können Sie einen Teil des Steuerwerts (z. B. den Monat) auswählen und dann mit den Aufwärts- / Abwärtspfeilen diesen Teil des Datums- / Uhrzeitwerts ändern (z. B. Erhöhen / Verringern der Monat).

Was ich tun möchte, ist, das Gleiche mit dem Mausrad zu erlauben. Ich habe versucht, mich bei der Veranstaltung MouseWheel anzumelden, aber ich finde keinen Weg zu wissen, welcher Teil meines Datums / Zeit gerade ausgewählt ist, so dass ich nicht weiß, ob ich die Zeit, den Tag, den Monat oder die Zeit erhöhen soll Jahr.

Gibt es eine Möglichkeit, dies zu tun?

    
Ksempac 22.06.2009, 09:07
quelle

6 Antworten

11

Eine mögliche, aber nicht ganz elegante Lösung wäre etwa:

%Vor%

Dies sollte definitiv im allgemeinen Fall funktionieren, aber einige Eckenfälle könnten unerwartete Ergebnisse haben (wie KeyUp / KeyDown Ereignisse überschrieben werden)

    
Vorber 22.06.2009, 12:50
quelle
2

Ich habe versucht, das auch herauszufinden. Am Ende endete ich damit:

%Vor%

Sie können diesen Handler automatisch allen Ihren Datumswählern in Ihrem Formular und seinen Containern mit dieser Methode hinzufügen. Rufen Sie es einfach einmal in form_load:

%Vor%     
Jiri 22.06.2009 12:51
quelle
1

Verwenden Sie sendmessage WM_KEYDOWN / WM_KEYUP

%Vor%     
Vozzie 09.11.2010 00:39
quelle
0
%Vor%

Referenz: Ссылка

    
Fiur 22.06.2009 09:18
quelle
0

Wenn Sie die ShowUpDown -Eigenschaft auf True setzen, erhalten Sie eine Drehbox statt einer Dropdown-Liste, und dies ändert den hervorgehobenen Teil des Datums. Obwohl ich gerade herausgefunden habe, dass dies irrelevant ist, da die Pfeil-nach-oben- und Nach-unten-Tasten den hervorgehobenen Teil des Datums ändern, unabhängig davon, ob diese Eigenschaft auf "True" gesetzt ist oder nicht.

Wenn Sie diesen Code finden, sollten Sie in der Lage sein, das Mausrad auch zu arbeiten. Ich werde einen Blick darauf werfen und sehen, was ich finden kann.

UPDATE:

Ich habe gerade diesen Hinweis über die Eigenschaft ShowCheckBox gefunden:

  

Lesen / Schreiben. Wenn dies der Fall ist, ist ein Kontrollkästchen aktiviert   links neben Datum und Uhrzeit angezeigt   Wert in der Steuerung. Wenn das   Checkbox ist aktiviert, die Werte in der   Steuerung kann vom Benutzer bei geändert werden   Laufzeit durch Markieren eines Teils von   das Datum und die Pfeiltasten drücken.   Wenn nicht aktiviert, kann das Datum nur sein   geändert durch Klicken auf das Dropdown-Menü   um den Kalender anzuzeigen. Standard ist   falsch.

Ist das von Nutzen?

UPDATE 2:

Ich konnte keinen Code finden, der sich mit diesem speziellen Aspekt von DateTimePicker befasst. Gibt Microsoft den Code für diese Art von Steuerelementen nicht mehr frei?

    
ChrisF 22.06.2009 09:21
quelle
0

Bin mir nicht sicher, aber ist diese Richtung gut ..

Ist es nicht sicher, dass x Koordinate für Monat & lt; x für Tag & lt; x für Jahr (unter der Annahme, dass kein benutzerdefiniertes Format vorliegt) innerhalb des Datepicker-Steuerelements, da es entlang der X-Achse angezeigt wird

Dann können wir vielleicht das dateTimePicker1_MouseDown-Ereignis erfassen und die x-Koordinate, auf die wir geklickt haben, vor dem Bildlauf in eine Variable sagen: xCordOfClick, und dann diese im Fiur-Code für das Mausrad verwenden, um basierend auf dem Unterschied in dem wir geklickt haben und zu inkrementieren die x-Position des Datumsspeichers.

etwas wie

In dateTimePicker1_MouseDown (Objektabsender, MouseEventArgs e)

%Vor%

In Mausrad-Ereignis

%Vor%     
AB. 22.06.2009 11:42
quelle

Tags und Links