Control für Monat + Jahr

  • VB.NET
  • .NET (FX) 4.0

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von diylab.

    Control für Monat + Jahr

    yo Leute,

    ich habe ein kleines Problem.
    Ich nutze derzeit einen DatetimePicker mit dem CustomFormat MMMM yyyy damit ich das Monat und Jahr zB so angezeigt bekomme: März 2014
    Zusätzlich habe ich die Property ShowUpDown auf True um das Monat wechseln zu können.

    Leider kann ich auch das Jahr wechseln. Es kommt halt darauf an welcher Teil eben markiert ist (März oder 2014). Die Buttons sind relativ klein und deswegen passiert es sogar mir beim Testen oft, dass ich das Jahr verstelle anstatt das Monat.

    Ich würde nun gerne eine Möglichkeit haben, dass wenn ich auf Up oder Down klickse IMMER das Monat um 1 erhöht bzw. verringert wird. Von Dezember auf Jänner soll natürlich das Jahr zb von 2014 auf 2015 mitspringen.

    Kennt wer eine Möglichkeit oder ein Control was das kann?

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten

    fichz schrieb:

    Kennt wer eine Möglichkeit oder ein Control was das kann?

    Wie wäre es mit einem eigenen Control?
    Ich gebe Dir mal eine Vorlage, da kannst Du Dir nach belieben ein Control daraus Basteln!

    C# Version (C# -> VB.NET Konverter in meiner Signatur benutzen):
    Spoiler anzeigen

    C#-Quellcode

    1. using System;
    2. using System.Windows.Forms;
    3. namespace MonthYear
    4. {
    5. public partial class frmMain : Form
    6. {
    7. private DateTime dt = DateTime.Today;
    8. public frmMain()
    9. {
    10. InitializeComponent();
    11. btn_Click(null, null);
    12. }
    13. /// <summary>
    14. /// Alle Button-Clicks
    15. /// </summary>
    16. /// <param name="sender"></param>
    17. /// <param name="e"></param>
    18. private void btn_Click(object sender, EventArgs e)
    19. {
    20. if (sender == btnMonthUp)
    21. dt = dt.AddMonths(1);
    22. if (sender == btnMonthDown)
    23. dt = dt.AddMonths(-1);
    24. if (sender == btnYearUp)
    25. dt = dt.AddYears(1);
    26. if (sender == btnYearDown)
    27. dt = dt.AddYears(-1);
    28. lblMonth.Text = dt.ToString("MMMM");
    29. lblYear.Text = dt.ToString("yyyy");
    30. }
    31. }
    32. }


    Sieht dann quick´n dirty so aus ( ^^ ) :



    Du kannst nun bei Bedarf die beiden Button für das Jahr entfernen (und den Code), dann entspricht es Deinen Vorgaben.
    Projekt zum Fummeln ist dabei.

    Viel Spaß beim Tüfteln,
    Bruno
    Dateien
    • MonthYear.zip

      (48,39 kB, 155 mal heruntergeladen, zuletzt: )
    Ich muss ehrlich gesagt sagen, dass es für mich nicht wirklich eine Option ist, ein eigenes Control zu erstellen.
    Hab sowas noch nie gemacht und würde es ungern bei einem Programm "versuchen" welches mal produktiv eingesetzt wird.

    Was mir am DateTimePicker auch so gut gefällt ist die Kompaktheit und Größe (hab nicht viel Platz).
    Es funktioniert wie gesagt alles wie ich es will, außer halt, dass man das blöde Jahr markieren und verändern kann.

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    Ich habs jetzt ganz simpel gemacht.
    Ich hab mir zwar kein eigenes Control erstellt, aber einfach ein Label mit Rahmen und weißen Hintergrund als "Anzeige", eine Private DateTimeVariable als Wertespeicher und 2 Buttons welche AddMonth(1) bzw -1 machen.

    Sieht ganz schick aus und braucht wenig Platz.



    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten

    fichz schrieb:

    Ich hab mir zwar kein eigenes Control erstellt, aber einfach ein Label mit Rahmen und weißen Hintergrund als "Anzeige", eine Private DateTimeVariable als Wertespeicher und 2 Buttons welche AddMonth(1) bzw -1 machen.

    Genau deshalb gab ich Dir meinen Denkanstoß, der ja genau so arbeitet, nur anders aussieht - Du Held :D !