2017-02-22 17 views
0

Ich habe eine DateTimePicker in meiner Windows Forms-Anwendung. Ich gab ihm ein benutzerdefiniertes Format, so dass beim Laden des Formulars DateTimePicker mit einem leeren Wert angezeigt wird und ein Handler für das Ereignis ValueChanged des Auswahlers erstellt wurde, sodass das Format geändert wird, wenn der Benutzer auf das Symbol klickt, um den Kalender anzuzeigen..NET Windows Forms - Klicken Sie auf Ereignis auf DateTimePicker

Allerdings möchte ich meine DateTimePicker so einstellen, dass sie ihr Format ändert, wenn der Benutzer auf das leere Teil klickt (dasjenige, das das Datum im angegebenen Format enthalten würde). Dies ist mein Code für das Ereignis:

Private Sub dtpDateOfBirth_Click(sender As Object, e As EventArgs) Handles 
    dtpDateOfBirth.Click 

    Console.WriteLine("dtpDateOfBirth Click") 
    dtpDateOfBirth.CustomFormat = "dd/MM/yyyy" 
End Sub 

aber es scheint nicht, etwas zu tun, auch nicht, wenn ich auf das Symbol klicken, die den Kalender zeigt.

Wie kann ich das Format meiner DateTimePicker durch einen Mausklick ändern?

+0

Wenn Sie in der Dropdown-Liste im Code-Editor sehen die DTP tut ein Click-Ereignis aus. Der Benutzer würde nicht wirklich erwarten, dass sich das Format bei einem Klick trotzdem ändert. – Plutonix

+0

@Plutonix Tatsächlich gibt es ein Klickereignis frei; Ich habe darauf geklickt und es hat das Sub für mich gemacht. Deshalb stelle ich diese Frage. Und der Benutzer, der es getestet hat, hat tatsächlich darum gebeten; es ist jedoch nicht genau eine Formatänderung für ihn; Das benutzerdefinierte Format ist ein Leerzeichen, daher erscheint das Datum zunächst leer, und er hat erwartet, dass er nach dem Klicken auf den leeren Teil tippen kann, ohne gezwungen zu sein, den Kalender zu verwenden. –

+0

[eigentlich nicht] (http://i.imgur.com/yt67mxy.jpg) Von [MSDN] (https://msdn.microsoft.com/en-us/library/system.windows.forms.datetimepicker (v = vs.110) .aspx) Die Klickereignisse sind ... 'nicht dazu bestimmt, direkt von Ihrem Code verwendet zu werden. ' – Plutonix

Antwort

1

Sie könnten das Mousedown-Ereignis verwenden:

Private Sub dtpDateOfBirth_Click(sender As Object, e As EventArgs) Handles 
    dtpDateOfBirth.MouseDown 

    Console.WriteLine("dtpDateOfBirth Click") 
    dtpDateOfBirth.CustomFormat = "dd/MM/yyyy" 
End Sub 
Verwandte Themen