2011-11-21 14 views
16

Ho un pulsante in un modulo Windows Form per il quale cambio il colore di sfondo a Color.Yellow quando viene fatto clic. Quando viene cliccato di nuovo, voglio ripristinarlo nell'aspetto predefinito originale.Ripristina C# Windows Forms backcolor

Il colore di default predefinito è SystemColor.Control.

Quando il pulsante viene premuto per la prima volta l'unica cosa che cambia è il

btn.Text = "ABC"; 
btn.BackColor = Color.Yellow; 

Quando è scattato di nuovo io fare

btn.BackColor = SystemColors.Control 

Il nuovo fondo non si ha la stessa ombreggiatura come originariamente fatto prima di qualsiasi clic. Il pulsante aveva originariamente uno sfondo che non era un colore solido, ma due sfumature di grigio leggermente diverse. Il colore finale diventa una solida sfumatura di grigio.

Lo sto testando su una macchina Windows 7.

Screenshot:

Enter image description here

+1

di poter postare uno screenshot? Inoltre, su quale versione del sistema operativo si sta eseguendo? –

+4

Maggiore è il numero di tentativi che hai posto nelle tue domande, le risposte migliori che otterrai includeranno schermate del problema. – Nasreddine

+0

Correlati: * [Come ripristinare il pulsante predefinito BackColor?] (Http://stackoverflow.com/questions/10569200) * –

risposta

22

Prova questo:

if (button1.BackColor == Color.Yellow) 
{ 
    button1.BackColor = SystemColors.Control; 
    button1.UseVisualStyleBackColor = true; 
} 
else 
{ 
    button1.BackColor = Color.Yellow; 
} 
+0

Bingo, che ha funzionato grazie – JonF

+0

+1 Buona cattura non ero a conoscenza di quel metodo –

1

Prova utilizzando btn.ResetBackColor() invece di impostare manualmente il BackColor.

+1

Quella funzione non esiste nel pulsante winform (almeno in una winform .net 3.5) – JonF

+1

In realtà esiste, non appare in intellisense perché è contrassegnato come [EditorBrowsable (EditorBrowsableState.Never)] –

+1

@JonF Secondo [MSDN] (http://msdn.microsoft.com/en-us/library /system.windows.forms.control.resetbackcolor.aspx) esiste, dal .Net 1.0 – Nasreddine

11

È inoltre necessario impostare UseVisualStyleBackColor su true. Questa proprietà viene impostata su false quando si modifica il backcolor.

+2

+1 Questo è esattamente ciò di cui hai bisogno per risolvere il tuo problema. –

1

Questo ripristinerà l'aspetto di default (testato su Windows 7, .net 3.5):

btn.BackColor = System.Drawing.Color.Transparent; 
Problemi correlati