Entwickler-Ecke

WinForms - Buttonfarbe beim Focus ändern - für alle Buttons in der Form


MartinBush - Fr 27.06.08 18:09
Titel: Buttonfarbe beim Focus ändern - für alle Buttons in der Form
Hi,

ich habe ein Form für eine PocketPC Apllication.

Wenn ein bestimmter Button den Focus hat soll sich seine Farbe ändern. Ich möchte das generell für alle Knöpfe so haben - zu jedem Knopf eine Funktion GotFocus und Lostfocus verursacht ja zu viel Code. Für jeweils einen Knopf ist mir die Funktion klar.

Geht das nicht auch über die ganze Klasse Buttons?


Mfg Martin


Christian S. - Fr 27.06.08 18:53

Hallo!

Du kannst Dir Deine eigene Button-Klasse ableiten:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
    class HighlightButton : Button
    {
        public Color HighlightBackColor {get; set;}
        private Color oldBackColor;

        protected override void OnGotFocus(EventArgs e)
        {
            oldBackColor = this.BackColor;
            this.BackColor = highlightBackColor;
            base.OnGotFocus(e);
        }

        protected override void OnLostFocus(EventArgs e)
        {
            this.BackColor = oldBackColor;
            base.OnLostFocus(e);
        }
    }


Nach einmaligen Erstellen des Projektes erscheint die dann auch in der Deiner Toolbox und Du kannst sie ganz normal im Designer verwenden.

Wenn Du keine eigene Klasse haben willst, kannst Du den selben Event-Handler allen Buttons zuweisen.

Grüße
Christian


MartinBush - Fr 27.06.08 19:05

Prima danke