2009-12-10 37 views
6

Czy w systemie Windows można odzyskać kolor używany jako kolor tła nieaktywnych elementów sterujących (TextBox itd.)? A może jeszcze kolor obramowania?Nieaktywny kolor tła sterowania

To jest dla Windows Forms i nie byłem w stanie znaleźć niczego odpowiedniego w SystemColors. Nie ma takiej rzeczy. Przypadek taki. Mam pole tekstowe, które może nie być wystarczająco duże dla tekstu, który ma i jest wyłączone. Gdy jest wyłączona, użytkownik nie może przewinąć, aby wyświetlić cały tekst, a nawet nie mogę wyświetlić etykiety narzędziowej for obvious reasons.

Więc to, co teraz zrobiłem, to ustawienie właściwości TextBox 'ReadOnly na true, która pozwala mi wyświetlać podpowiedzi i kontrolować przewijanie. Klient chce teraz, aby pole tekstowe wyglądało tak, jakby było wyłączone; ReadOnly to dość nieprzyjemna właściwość, ponieważ nadal wygląda ona tak: wygląda na, tak jak można edytować. Pomyślałem więc, że umieszczenie odpowiedniego koloru tła może wystarczyć, by oszukać większość użytkowników. Nie mogę użyć arbitralnej wartości szarości, ponieważ w tym formularzu są również inne wyłączone elementy sterujące, a różnice w kolorach mogłyby zostać zauważone. Czy istnieje sposób, w jaki mogę dowiedzieć się, jak wyłączony formant jest renderowany? Kolor tła i kolor obramowania lub przynajmniej ten pierwszy powinien tu wystarczyć, ale wolałbym nie zgadywać. Platformy, o których mowa, to najprawdopodobniej XP i Vista, być może z motywami lub bez nich.

ETA: Nieprzestrzeganie. Pytanie było głupie i błąd w moim imieniu powinienem był zauważyć wcześniej. To było trochę dziwne, że pojedynczy TextBox nie przylega do szarego tła.

+1

myślę, że to jest raczej ustalono, że pola tekstowe z „szarej” (jak w 'SystemColors.Control') nie są edytowalne, więc nie będę naprawdę rozważyć ten problem. Ale jeśli klient tak mówi, to znaczy, że klient tak mówi. –

+0

Cóż, nie wiedziałem * co * dokładnie szare. Fakt, że wciąż mogą skoncentrować kontrolę za pomocą opcji "ReadOnly = true", jest prawdopodobnie dla nich niezauważalny. Na szczęście :-) – Joey

+0

Już miałem powiedzieć to samo. Ponieważ pola tekstowe tylko do odczytu mają ten sam kolor tła co wyłączone pola tekstowe, wyglądają one tylko do odczytu, jeśli mnie o to poprosisz. – bernhof

Odpowiedz

23

Po wyłączeniu pole tekstowe ma kolor tła SystemColors.Control i kolor pierwszego planu SystemColors.GrayText.

3

Spróbuj tego:

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