Button BackColor zurücksetzen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Button BackColor zurücksetzen

    Hi,

    ich habe ein paar Buttons ... siehe 1. Anhang.

    ForeColor und BackColor verändere ich, um anzuzeigen, das die sich die Buttons in einem Test Modus befinden. (siehe 2. Anhang)

    Wenn der Test Modus ausgeschaltet wird, möchte ich ForeColor und BackColor zurücksetzen. Das versuche ich mit einer Prozedur wie folgt:

    VB.NET-Quellcode

    1. Private Sub SetButtonsTestMode(ByRef myButton As Button, myForeColor As Color, myBackColor As Color)
    2. myButton.ForeColor = myForeColor
    3. myButton.BackColor = myBackColor
    4. End Sub


    Das klappt aber leider nur eingeschränkt!

    s. 3. Anhang

    Blöde ist nur, dass damit der ursprüngliche Zustand nicht mehr hergestellt wird. Zu Beginn haben die Buttons einen "zweifarbigen" Hintergrund ... jetzt ist die Sache einfarbig! Den Unterschied sieht man etwa im dritten Anhang an den Buttons "Edit Log" und "Process All Sel"

    Das ist nicht gerade tragisch, denn der Unterschied ist marginal ... aber stören tut es mich schon !

    Wie kann ich denn den vom Designer zugewiesenen Hintergrund wieder erhalten ?

    LG
    Peter
    Bilder
    • s 2017-02-22 13-33-38.jpg

      12,07 kB, 242×178, 737 mal angesehen
    • s 2017-02-22 13-33-48.jpg

      12,62 kB, 242×178, 775 mal angesehen
    • s 2017-02-22 13-33-54.jpg

      12,16 kB, 242×178, 759 mal angesehen
    Welchen Wert die BackColor des Buttons zu Beginn hat, das weiß ich ja - da muss ich nur im Designer nachschauen.

    Aber - wie so oft - beim Erstellen eines Testanwendung hab ich jetzt entdeckt, wo die "Zweifarbigkeit" gesetzt wird:

    VB.NET-Quellcode

    1. myButton.UseVisualStyleBackColor = True


    Da liegt der Hase im Pfeffer ... durch das Setzen der BackColor wird diese Eigenschaft auf False gesetzt ... und man muss sie deshalb nach dem Restore der Farbe wieder von Hand einschalten.

    Danke für deinen Ratschlag, der mich auf den richtigen Weg gebracht hat!

    LG
    Peter

    Peter329 schrieb:

    VB.NET-Quellcode

    1. Private Sub SetButtonsTestMode(ByRef myButton As Button, myForeColor As Color, myBackColor As Color)
    Ist das nicht ein wenig viel Aufwand für einen Zweizeiler?
    Ich könnet mir vorstellen, dass Du 2 Vordergrund- und 2 Hintergrundfarben verwendest.
    Pack die in Klassen-Variablen oder Arrays und ruf die Prozedur auf mit dem Button und nem Index oder mit True / False, falls da was alternierendes vorkommt.
    Und
    Diese Prozedur bedarf keines ByRef-Parameters Button, da die Variable myButton bereits instanziiert ist.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!