Veröffentlicht 30. Januar 20187 j Heyho, ich versuche einen Kalender mit Feiertagen einzufärben, allerdings soll die tatsächliche momentane Auswahl eine andere Farbe haben. (1.1. und 6.1. sollen rot sein, mit Maus-klick auf den 7.1. soll dieser aber als momentane Auswahl gelb sein) Das Problem: Ich habe zwar einen Weg gefunden bestimmte definierte Tage als Auwahl einzufärben, aber dazu zählt auch die Auswahl mit der Maus - die wiederum möchte ich in einer anderen Farbe haben. Hier mal der Code: protected void Calendar1_DayRender(object sender, DayRenderEventArgs e) { DateTime[] feiertage = Feiertage.Berechnen(); foreach (DateTime feiertag in feiertage) { Calendar1.SelectedDates.Add(feiertag); } Calendar1.SelectedDayStyle.BackColor = System.Drawing.Color.Red; Calendar1.TodayDayStyle.BackColor = System.Drawing.Color.Yellow; } Was ich eigentlich suche ist wie ich Zellen einfärben kann ohne dass sie als "Auswahl" (Selected blabla) zählen. Hat da jemand Ideen? Grüße Tician
30. Januar 20187 j Vlt hilft ja das https://docs.microsoft.com/de-de/dotnet/framework/winforms/controls/display-specific-days-in-bold-with-wf-monthcalendar-control allgemein finde ich mehr zu Monthcalendar
31. Januar 20187 j Lösung @TicianWelches Calendar-Control nutzt Du überhaupt? Bei System.Web.Ui.WebControls.Calendar kannst Du das DayRender Event nutzen - siehe Bsp: https://msdn.microsoft.com/de-de/library/system.web.ui.webcontrols.calendar.dayrender(v=vs.110).aspx Bei Winforms ließe sich sicher entsprechend was ableiten und erweitern/überschreiben..
1. Februar 20187 j Autor Moin, Ich benutze den Kalender von System.Web.UI.WebControls und der hat anders als der MonthCalendar leider kein "AddBoldedDate". Das day-render Event benutze ich ja schon (wie vielleicht aus meinem Code ersichtlich), aber da habe ich eben nur eine Methode gefunden um eine Farbe zu ändern und finde nichts um wiederum andere Tage in einer anderen Farbe anzuzeigen und nicht alle in derselben.
1. Februar 20187 j Hallo @Tician! Ich verstehe das Problem nicht so ganz, der Artikel, den @RipperFox verlinkt hat, macht doch genau das. In der Methode werden abhängig von einer Bedingung Tage eingefärbt. Wenn du deine Bedingung sauber spezifizierst, sollte das doch überhaupt kein Problem sein, oder? Auszug aus dem Artikel: void DayRender(Object source, DayRenderEventArgs e) { // Change the background color of the days in the month // to yellow. if (!e.Day.IsOtherMonth && !e.Day.IsWeekend) e.Cell.BackColor=System.Drawing.Color.Yellow; // Add custom text to cell in the Calendar control. if (e.Day.Date.Day == 18) e.Cell.Controls.Add(new LiteralControl("<br />Holiday")); } Die Properties sind so sprechend, das muss nicht mal in Pseudocode übersetzt werden. Löst das dein Problem? Wenn nein, musst du zumindest, damit ich es verstehe, etwas präziser werden, was du schon probiert hast und was nicht. Gruß, Goulasz
1. Februar 20187 j Autor Hi @Goulasz Du hast recht, ich habe herausgefunden wie es geht. Weiß nicht was mich da geritten hat, ich wollte irgendwie "e" definieren und das geht halt nicht. Ich hatte nicht verstanden, dass das Ereignis für jeden Tag gilt. Lösung sieht also nun so aus: protected void Calendar1_DayRender(object sender, DayRenderEventArgs e) { DateTime[] feiertage = Feiertage.Berechnen(); foreach (DateTime feiertag in feiertage) { if ((e.Day.Date.Day == feiertag.Day) && (e.Day.Date.Month == feiertag.Month)) { e.Cell.BackColor = System.Drawing.Color.Red; } } } Danke! Bearbeitet 1. Februar 20187 j von Tician
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.