Hvordan å gjengi en kontroll for å se ut som ComboBox med Visual Styles aktivert?

stemmer
28

Jeg har en kontroll som er modellert på en ComboBox . Jeg ønsker å gjengi kontroll slik at kontrollen grensen ser ut som en standard Windows ComboBox . Nærmere bestemt, jeg har fulgt MSDN dokumentasjon og all gjengivelse av kontrollen er riktig bortsett gjengivelse når kontrollen er deaktivert.

Bare for å være klar, er dette for et system med Visual Styles aktivert. Også alle deler av kontroll gjengis riktig unntatt ramme rundt en funksjonshemmet kontroll, noe som ikke samsvarer med funksjonshemmede ComboBox grensen farge.

Jeg bruker VisualStyleRenderer klassen. MSDN foreslår å bruke den VisualStyleElement.TextBoxelement for TextBox del av ComboBox kontroll, men en standard deaktivert TextBox og en standard deaktivert Kombinasjonsboks trekke litt forskjellig (en har en lys grå kant, den andre en lys blå ramme).

Hvordan kan jeg få korrekt gjengivelse av kontrollen i en deaktivert tilstand?

Publisert på 05/08/2008 klokken 21:19
kilden bruker
På andre språk...                            


2 svar

stemmer
8

Jeg er ikke 100% sikker på om dette er hva du er ute etter, men du bør sjekke ut VisualStyleRenderer i System.Windows.Forms.VisualStyles-navnerommet.

  1. VisualStyleRenderer klasse (MSDN)
  2. Hvordan: Render en visuell stil Element (MSDN)
  3. VisualStyleElement.ComboBox.DropDownButton.Disabled (MSDN)

Siden VisualStyleRenderer ikke vil fungere dersom brukeren ikke har visuelle stiler aktivert (han / hun kan kjøre 'klassisk modus' eller et operativsystem før Windows XP) bør du alltid ha en fallback til ControlPaint klassen.

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

og deretter gjøre som dette når tegning:

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

Håper det hjelper!

Svarte 16/08/2008 kl. 21:28
kilden bruker

stemmer
1

Er noen av ControlPaint metoder nyttig for dette? Det er det jeg vanligvis bruker for skredder gjengis kontroller.

Svarte 16/08/2008 kl. 19:58
kilden bruker

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