Jak renderować kontrolę wyglądać ComboBox z włączonym Style wizualne?

głosy
28

Mam kontroli, który jest wzorowany na ComboBox . Chcę oddać kontrolę tak, że kontrola granicy wygląda podobnie jak standardowy ComboBox systemu Windows . Konkretnie, śledzę dokumentacji MSDN i wszystkie świadczenia sterowania jest poprawne z wyjątkiem renderowania gdy kontrola jest wyłączona.

Żeby było jasne, to jest dla układu z efektami wizualnymi włączone. Ponadto, wszystkie elementy sterowania wyświetla się poprawnie z wyjątkiem obramowania wokół niepełnosprawnego kontrolą, która nie pasuje do wyłączonego ComboBox granicznego kolor.

Używam VisualStyleRenderer klasę. MSDN sugeruje pomocą VisualStyleElement.TextBoxelementu do TextBox część kombi sterowania za pomocą standardowej wyłączone pole tekstowe i standardowej wyłączone ComboBox wyciągnąć nieco inaczej (jedna ma jasnoszary granicy, druga niebieską obwódką światła).

Jak mogę uzyskać poprawne renderowanie kontrolą w stanie wyłączonym?

Utwórz 05/08/2008 o 22:19
źródło użytkownik
W innych językach...                            


2 odpowiedzi

głosy
8

Nie jestem 100% pewien, czy to jest to, czego szukasz, ale należy zapoznać się z VisualStyleRenderer w System.Windows.Forms.VisualStyles-nazw.

  1. Klasa VisualStyleRenderer (MSDN)
  2. Jak: Render Visual Style Element (MSDN)
  3. VisualStyleElement.ComboBox.DropDownButton.Disabled (MSDN)

Od VisualStyleRenderer nie będzie działać, jeśli użytkownik nie mają style wizualne włączone (on / ona może być uruchomiony „tryb klasyczny” lub system operacyjny przed Windows XP), należy zawsze mieć zapasowe do klasy ControlPaint.

// Create the renderer.
if (VisualStyleInformation.IsSupportedByOS 
    && VisualStyleInformation.IsEnabledByUser) 
{
    renderer = new VisualStyleRenderer(
        VisualStyleElement.ComboBox.DropDownButton.Disabled);
}

a następnie zrobić tak, gdy rysunek:

if(renderer != null)
{
    // Use visual style renderer.
}
else
{
    // Use ControlPaint renderer.
}

Mam nadzieję, że to pomoże!

Odpowiedział 16/08/2008 o 22:28
źródło użytkownik

głosy
1

Czy którykolwiek z ControlPaint metod przydatnych do tego? To, co zwykle używać do kontroli niestandardowych renderowane.

Odpowiedział 16/08/2008 o 20:58
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more