Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

[erledigt] Viele Panels: Hintergrundfarbe des gerade geklickten Panels ändern, ohne redundanten Code
atlantaphoenix
myCSharp.de - Member



Dabei seit:
Beiträge: 11
Herkunft: Nastätten (RLP)

Themenstarter:

[erledigt] Viele Panels: Hintergrundfarbe des gerade geklickten Panels ändern, ohne redundanten Code

beantworten | zitieren | melden

Hallo allerseits,

ich habe verschiedene Panels in meiner Windows-Form. Jedes Panel soll, nachdem es angeklickt wurde, die Farbe ändern. Das Problem ist, dass ich sehr viele dieser Panels habe und ich jedes Mal den Namen des jeweiligen Panels anpassen muss. Gibt es eine Möglichkeit, das Ganze einheitlich zu gestalten?

private void panel4_Click(object sender, EventArgs e)
        {
            if (radioButton25.Checked)
                panel4.BackColor = Color.Blue;
            if (radioButton26.Checked)
                panel4.BackColor = Color.Orange;
            if (radioButton24.Checked)
                panel4.BackColor = Color.Red;
            if (radioButton29.Checked)
                panel4.BackColor = Color.White;
            if (radioButton28.Checked)
                panel4.BackColor = Color.Green;
            if (radioButton27.Checked)
                panel4.BackColor = Color.Brown;
        }
In diesem Beispiel müsste ich, wenn ich den Code kopiere und z.B. für das Panel "panel5" benutzen möchte, jedes Mal "panel4.BackColor" in "panel5.BackColor" verändern. Ist es vielleicht möglich, eine Variable dafür einzusetzen, die auf das Ereignis "panel4-Click" zugreift?
private Nachricht | Beiträge des Benutzers
Aratar
myCSharp.de - Member



Dabei seit:
Beiträge: 126

beantworten | zitieren | melden

Verwende für alle den gleichen EventHandler. Dann kannst du nämlich:


private void panel_Click(object sender, EventArgs e)
{
      ((Panel)sender).BackColor = Color.Blue;
}

Mfg
Aratar
private Nachricht | Beiträge des Benutzers
xxMUROxx
myCSharp.de - Member

Avatar #avatar-3236.jpg


Dabei seit:
Beiträge: 1626
Herkunft: Südtirol/Italien

beantworten | zitieren | melden

Hallo atlantaphoenix,
sender beihnhaltet jenes Control in deinem Fall das Panel welches geklickt wurde. Also dementsprechend Casten und dies Sache hat sich.
Achja: Zusätzlich sollte jedes Panel diese Methode als Click-Event abonniert bekommen.

Gruß
Michael
Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp
private Nachricht | Beiträge des Benutzers
atlantaphoenix
myCSharp.de - Member



Dabei seit:
Beiträge: 11
Herkunft: Nastätten (RLP)

Themenstarter:

beantworten | zitieren | melden

Perfekt!!!

Genau das habe ich gebraucht!!! Es funtioniert wunderbar und ich muss nicht die ganzen Codes abschreiben.

Vielen Dank!
private Nachricht | Beiträge des Benutzers

Moderationshinweis von herbivore (05.06.2011 - 11:42:02):

Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 1.1.1 und 1.1.