Zum Inhalt springen
  • 0

C# Calendar einfärben


Tician

Frage

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

5 Antworten auf diese Frage

Empfohlene Beiträge

  • 1

@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..

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2

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 :goulasz: 

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0

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 von Tician
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Diese Frage beantworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...