DateTimePicker ändert Value bei Click ohne Event



  • Hi, Du hast mich falsch verstanden... ich weiss wie man das Datum setzt ich will verhindern, dass er das aktuelle Datum setzt, wenn man den Calender im DTP aufruft...



  • Dann schau dir doch mal diesen Code an ...



  • Danke für den Code, aber da habe ich leider nicht das gefunden was ich gesucht habe.

    Ich hab auch schon überlegt, mir einen eigenen DTP abzuleiten, aber es bleibt die Frage, welche Methode für das Aufklappen des Kalenders und das Setzen des Datums zuständig ist und ob ich die, wenn ich sie überschreibe, dann nachprogrammieren kann...

    Hab da leider nix gefunden... Hast Du sowas schon mal gemacht?

    Beste Grüße

    Solick



  • Versuchen wir's mit einem anderen - vielleicht besseren - Beispiel: a nullable and editable DateTimePicker.



  • also aus dem Beispiel finde ich die Lösung auch nicht... Selbst wenn ich im OnDropDown die WindowsMessage abfange ist das immer noch zu spät, das Datum wurde bereits gesetzt...

    Könntest Du mir bitte einfach die Frage beantworten ob es möglich ist dass Setzen des aktuellen Datums beim öffnen des Kalenders zu verhindern / beeinflussen und wenn ja wo ich ansetzten muss?



  • solick schrieb:

    also aus dem Beispiel finde ich die Lösung auch nicht... Selbst wenn ich im OnDropDown die WindowsMessage abfange ist das immer noch zu spät, das Datum wurde bereits gesetzt...

    Könntest Du mir bitte einfach die Frage beantworten ob es möglich ist dass Setzen des aktuellen Datums beim öffnen des Kalenders zu verhindern / beeinflussen und wenn ja wo ich ansetzten muss?

    bist du jetzt nur zu faul, nur zu blöde, oder beides ...........????



  • Danke für den konstruktiven Beitrag.

    Ich finde es schon interessant, dass ich hier ein spezifisches Problem habe und nach einem Ansatz frage und nicht gefragt habe ob es mir jemand programmiert.

    Was bekomme ich? Links zu Beispielen die - zumindest nach meinem Verständnis - nichts mit meiner Frage zu tun haben. Wenn ich dann nachfrage werde ich beschimpft.

    Ob das dem Community Gedanken dieser Plattform entspricht wage ich mal zu bezweifeln...

    In diesem Sinne, schönes Wochenende



  • @solick, hast Du überhaupt verstanden dass der WinForm DateTimePicker keine Nullwerte akzeptiert? Vllt reden ja hier alle aneinander vorbei.



  • Ja das habe ich verstanden, ist aber überhaupt nicht mein Problem. Vielleicht wurde mein Anliegen auch einfach nicht verstanden:

    meine beiden DTP nehmen ein Anfangsdatum und ein Enddatum auf.
    Da eine monatsweise Erfassung erfolgen soll, will ich das Datum begrenzen (MinDate 1. des jeweiligen Monats, MaxDate letzer des jeweiligen Monats).

    Bei Änderung eines der beiden DTP soll überprüft werden, ob die Daten Sinn machen (also ob das Bis-Datum >= dem From-Datum) ist.

    All das klappt!

    Mein PRoblem ist nur: Wenn ich auf einen Monat begrenze der nicht der aktuelle Monat ist passiert folgendes:

    Ich klicke das From-Feld an. Der Kalender öffnet sich und value wird auf den letzten Tag des Monats gesetzt. Dadruch wird natürlich auch das Datum des bis DTP überprüft und verändert (letzter Tag des Monats). Dann wird DTP_from Value wieder auf den Ausgangswert zurückgesetzt (MinDate in diesem Fall).

    Ich vermute, dass der Kalender beim öffnen value auf das aktuelle DAtum zu setzten versucht, und da das nicht klappt setzt er das Datum auf den nöchsten zulässigen Wert (MaxDate).

    Ich möchte nun lediglich verhindern, dass der Kalender beim öffnen value ändert ider den Wert gezielt setzen oder OnChanged-Event kurzfristig deaktivieren.

    Nur leider wird value schon geändert bevor irgendein Event greift. Jedenfalls finde ich keines, das dem Value setzten zuvorkommt....

    Was das alles mit einem nullable DTP zu tun hat erschließt sich mir nicht...



  • solick schrieb:

    Was das alles mit einem nullable DTP zu tun hat erschließt sich mir nicht...

    Na weil der darunter liegende Wert ein DateTime, kein Nullable<DateTime> ist. Irgendein Wert muß ja der Wert bei der Konstruktion zugewiesen bekommen und dass ist eben DateTime.Now;. Wir können nun darüber diskutieren warum das Teil so sch.... entworfen wurde aber es nützt nichts. Ich weiß nicht ob du überhaupt eine Chance hast, deshalb hier die Vorschläge das Teil zu erben und selber zu implementieren.



  • Wenn ich den Kalender deaktiviere und die UpDown Ansicht nutze klappt es. Die Zuweisung im Konstruktor setze ich, das ist nicht das Problem es geht wirklich nur um das öffnen der Kalenderansicht. Wenn ich das Event anfangen könnte bevor value verändert wird wäre ich wunschlos glücklich 🙂

    Ich habe nur bisher keine Möglichkeit gefunden, weil OnDropDown aufgerufen wird nachdem value geändert wurde....


Anmelden zum Antworten