Aktuellen Monat in ComboBox gleich anzeigen lassen

  • C#

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von ~blaze~.

    Aktuellen Monat in ComboBox gleich anzeigen lassen

    Moin,

    Wie kann ich den aktuellen Monat automatisch "initialisieren" lassen in C#?

    Sowas:

    C#-Quellcode

    1. DateTime Month = DateTime.Now;
    2. var a = Month.Month;
    3. ComMonat.SelectedIndex = a;


    Mir ist klar, Visual Studio erwartet einen Wert, keine Variable...

    Gibt es evtl. eine bessere Variante als jeden Monat einzeln aufführen:

    C#-Quellcode

    1. ComMonat.Items.Add("Januar");
    2. ComMonat.Items.Add("Februar");
    3. ComMonat.Items.Add("März");
    4. ComMonat.Items.Add("April");
    5. ComMonat.Items.Add("Mai");
    6. ComMonat.Items.Add("Juni");
    7. ComMonat.Items.Add("Juli");
    8. ComMonat.Items.Add("August");
    9. ComMonat.Items.Add("September");
    10. ComMonat.Items.Add("Optober");
    11. ComMonat.Items.Add("November");
    12. ComMonat.Items.Add("Dezember");


    danke für jegliche Hilfen!

    Gruss Newsletter
    Kommt drauf an wie es weiter geht, aber mit .SelectedText dürftest du weiter kommen...
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    @newsletter So was:

    VB.NET-Quellcode

    1. ComMonat.SelectedText = DateTime.Now.ToString("MMMM")
    und das Befüllen machst Du so (natürlich mit allen Monaten):

    VB.NET-Quellcode

    1. ComMonat.Items.AddRange(New String() {"Januar", "Februar", "März", "April"})

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    newsletter schrieb:

    Mir ist klar, Visual Studio erwartet einen Wert, keine Variable...


    Vielen Dank

    für weitere Hilfesuchende, habe es so gelöst:

    C#-Quellcode

    1. ​ ComMonat.Items.AddRange(new string[] { "Januar", "Februar" , "März", "April",
    2. "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember" });
    3. ComMonat.SelectedItem = DateTime.Now.ToString("MMMM");
    ... und vereinfachtes Füllen der Combobox:

    VB.NET-Quellcode

    1. ComMonat.Items.AddRange(Globalization.DateTimeFormatInfo.CurrentInfo.MonthNames)

    Und wenn der so entstehende Leereintrag nach Dezember stört:

    VB.NET-Quellcode

    1. ComMonat.Items.AddRange(Globalization.DateTimeFormatInfo.CurrentInfo.MonthNames.AsEnumerable.Where(Function(p) Not String.IsNullOrWhiteSpace(p)).ToArray)
    Ob Wert oder Variable war bei deinem Code auch egal(nur für compile time const relevant).
    Das entscheidende war, dass die Typen nicht implizit ineinander konvertiert werden können ein Text ist schließlich keine Zahl.
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Hi
    besser würde ich an dieser Stelle tatsächlich finden, du bindest die ComboBox an eine Datenquelle (z.B. System.ComponentModel.BindingList<T>). Du würdest einen Typ einführen, der den Anzeigenamen bereitstellt, ein z.B. Enum und dann die DataSource- und DisplayMember-Eigenschaft der ComboBox setzen.
    Du hast dadurch wesentlich bessere Handhabungsmöglichkeiten und insgesamt meines Erachtens nur positive Effekte (z.B. bzgl. Skalierbarkeit, Lokalisierung, Anpassungsfähigkeit, Modifizierbarkeit, uvm.).

    Viele Grüße
    ~blaze~