Laden...

Hintergrundfarbe setzten für jedes Object in einer Form

Erstellt von Suspekta vor 2 Jahren Letzter Beitrag vor 2 Jahren 185 Views
S
Suspekta Themenstarter:in
19 Beiträge seit 2020
vor 2 Jahren
Hintergrundfarbe setzten für jedes Object in einer Form

Hallo Forum,

ich möchte gern bei allen Objekten in einer Form beim "Enter" die Hintergrundfarbe festlegen und bei "Leave" die Farbe wieder zurücksetzten
So kann der User besser sehen, in welchem Objekt er gerade steht.

Versuch


private void Form1_Load(object sender, EventArgs e)
        {
foreach (Control c in this.Controls)
            {
                c.Enter += Control_Enter;
            }
}
 private void Control_Enter(object sender, System.EventArgs e)
        {
            // wie kann ich hier das Objekt ansprechen welches die Hintergrundfarbe setzen soll
        }

Oder geht das so garnicht ?

Wäre für jeden Tipp dankbar

LG

309 Beiträge seit 2020
vor 2 Jahren

Übersicht über Ereignishandler - Windows Forms .NET Framework

Der erste Parameter, sender , stellt einen Verweis auf das-Objekt bereit, das das Ereignis ausgelöst hat. Der zweite Parameter, e , im obigen Beispiel, übergibt ein Objekt, das für das behandelte Ereignis spezifisch ist.

D
261 Beiträge seit 2015
vor 2 Jahren

Der sender Parameter enthält bei Controls eigentlich immer das Objekt, welches das Event ausgelöst hat. Um darauf Zugriff zu erhalten musst du es dann noch casten (siehe Casting and type conversions - C# Programming Guide).

In neueren C# Versionen gibt es dafür das pattern matching (siehe How to safely cast by using pattern matching and the is and as operators):


private void Control_Enter(object sender, System.EventArgs e)
{
    if (sender is System.Windows.Forms.TextBox textbox)
    {
        textbox.BackColor = Color.Red;
    }
}

Früher:


private void Control_Enter(object sender, System.EventArgs e)
{
    var textbox = sender as System.Windows.Forms.Textbox;
    if (textbox != null)
    {
        textbox.BackColor = Color.Red;
    }
}

S
Suspekta Themenstarter:in
19 Beiträge seit 2020
vor 2 Jahren

Funktioniert ...

super Danke