2009-12-10 18 views
6

C'è un modo su Windows per recuperare il colore usato come colore di sfondo per i controlli inattivi (TextBox, ecc.)? O meglio ancora, anche il colore del bordo?Colore sfondo controllo inattivo

Questo è per Windows Form e non sono stato in grado di trovare nulla di adatto in SystemColors. Non esiste una cosa del genere

Caso in questione. Ho una casella di testo che potrebbe non essere abbastanza grande per il testo che contiene ed è disabilitata. Quando è disabilitato, l'utente non può scorrere per visualizzare l'intero testo e non riesco nemmeno a visualizzare un suggerimento for obvious reasons.

Quindi, quello che ho fatto ora è impostare la proprietà ReadOnlya true che mi consente di visualizzare i suggerimenti e di far scorrere il controllo. Il client ora vuole che la casella di testo assomigli a quella disabilitata; ReadOnly è una proprietà piuttosto brutta dal momento che è ancora sembra come può essere modificato. Quindi ho pensato che inserire il giusto colore di sfondo potrebbe essere sufficiente per ingannare la maggior parte degli utenti. Non posso usare un valore di grigio arbitrario poiché ci sono altri controlli disabilitati su quel modulo e probabilmente si noterebbero differenze di colore. Quindi c'è un modo per scoprire come viene reso un controllo disabilitato? Il colore di sfondo e il colore del bordo o almeno il primo dovrebbero essere davvero sufficienti qui, ma preferirei non indovinarlo. Le piattaforme in questione sono probabilmente XP e Vista sia con o senza temi.

ETA: Ignorare. La domanda era stupida e un errore a mio nome avrei dovuto individuarlo prima. Era solo un po 'strano che un singolo TextBox non aderisse a uno sfondo grigio.

+1

Penso che sia piuttosto stabilito che le caselle di testo con "grigio" (come in 'SystemColors.Control') non sono modificabili, quindi non sarebbe davvero considerare questo un problema. Ma se il cliente lo dice, bene, allora il cliente lo dice. –

+0

Beh, non sapevo * quale * grigio esattamente. Il fatto che possano ancora mettere a fuoco il controllo con 'ReadOnly = true' è probabilmente impercettibile per loro. Per fortuna :-) – Joey

+0

Stavo per dire la stessa cosa. Poiché le caselle di testo di sola lettura hanno lo stesso colore di sfondo delle caselle di testo disabilitate, esse sembrano di sola lettura se me lo chiedi. – bernhof

risposta

23

Se disabilitato, la casella di testo ha il colore di sfondo SystemColors.Control e il colore di primo piano SystemColors.GrayText.

3

Prova questo:

 treeView1.EnabledChanged += (s, o) => 
      { 
       treeView1.BackColor = treeView1.Enabled ? Color.White : SystemColors.Control; 
      };