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?
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
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
Perfekt!!!
Genau das habe ich gebraucht!!! Es funtioniert wunderbar und ich muss nicht die ganzen Codes abschreiben. 🙂
Vielen Dank!
Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 1.1.1 und 1.1.