none
alle Tage einer MonthCalender-Ansicht auslesen

    Frage

  • Hallo,

    einfache Frage: wie kann ich aus einem MonthCalender alle in einer Montasansicht angezeigten (nicht markierten!!!) Tage auslesen? Ich möchte diese Tage, die ja bei jedem Monat unterschiedlich sind in eine Tabelle übertragen, finde da aber kein "item" oder Ähnliches!

    Gruß Christoph

    Mittwoch, 23. Januar 2013 09:44

Antworten

  • Hallo, wenn ich richtig verstehe wie du das meinst (auch wenn ich nicht weiß warum man das brauchen sollte), dann sollte folgender Code funktionieren:
            private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
            {
                DateTime mon = new DateTime(monthCalendar1.SelectionStart.Year, monthCalendar1.SelectionStart.Month, 1);//1. Tag des Monats als DateTime
                DateTime[] days = new DateTime[6 * 7];//Zeigt 6 Wochen à 7 Tage an
                if (monthCalendar1.SelectionStart.DayOfWeek == DayOfWeek.Monday)//Montag liegt in der 2. Woche
                    days[0] = mon.AddDays(-7); //1 Woche zurück rechnen. Wenn 1. auf Montag fällt, dann ist er in der 2. Reihe
                else
                    days[0] = mon.AddDays(-GetDayCountFromMonday(mon.DayOfWeek) + 1);//Anhand des Wochentags vom 1. das Erste Datum berechnen 
                for (int i = 1; i < days.Length; ++i)
                    days[i] = days[i - 1].AddDays(1);
    
                //days sollte alle in monthCalendar1 angezeigten Tage enthalten.
            }
    
            private int GetDayCountFromMonday(DayOfWeek dow)
            {
                switch (dow)
                {
                    case DayOfWeek.Monday:
                        return 1;
                    case DayOfWeek.Tuesday:
                        return 2;
                    case DayOfWeek.Wednesday:
                        return 3;
                    case DayOfWeek.Thursday:
                        return 4;
                    case DayOfWeek.Friday:
                        return 5;
                    case DayOfWeek.Saturday:
                        return 6;
                    default:
                        //Sunday
                        return 7;
                }
            }
    Wenn der Kalender mehrere Monate anzeigt, dann muss der Code natürlich noch leicht modifiziert werden.


    Koopakiller [kuːpakɪllɐ] | Webseite | Code Beispiele | Facebook | Snippets


    Mittwoch, 23. Januar 2013 16:21

Alle Antworten