Wie ein Steuerelement aussehen ComboBox machen mit Visual Styles aktiviert?

stimmen
28

Ich habe eine Kontrolle , die auf einen modelliert ComboBox . Ich möchte die Kontrolle machen , so dass die Steuer Grenze wie die eines Standard sieht Windows - ComboBox . Insbesondere habe ich die MSDN - Dokumentation gefolgt und alle Rendering der Steuerung ist korrekt , außer für die Darstellung , wenn die Steuerung nicht aktiviert.

Nur um klar zu sein, dann ist dies für ein System mit Visual Styles aktiviert. Auch alle Teile der Steuerung machen richtig mit Ausnahme der Grenze um einen behinderten Kontrolle, die nicht deaktiviert überein ComboBox Grenze Farbe.

Ich bin mit der Visuals Klasse. MSDN schlägt die Verwendung VisualStyleElement.TextBoxElement für das Textfeld Teil der ComboBox Kontrolle , aber eine Standard - behinderte TextBox und eine Standard behinderte ComboBox etwas anders ziehen (man hat eine hellgraue Grenze, die andere eine hellblaue Grenze).

Wie kann ich korrekte Wiedergabe der Steuerung in einem deaktivierten Zustand erhalten?

Veröffentlicht am 05/08/2008 um 22:19
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
8

Ich bin nicht 100% sicher , ob dies ist , was Sie suchen , aber Sie sollten die Besuche Visuals im System.Windows.Forms.VisualStyles-Namespace.

  1. Visuals Klasse (MSDN)
  2. Gewusst wie: Rendern ein Visual Style Element (MSDN)
  3. VisualStyleElement.ComboBox.DropDownButton.Disabled (MSDN)

Da Visuals wird nicht funktionieren, wenn der Benutzer nicht visuelle Stile aktiviert (er / sie ‚klassischen Modus‘ läuft oder ein Betriebssystem vor Windows XP könnte) haben Sie sollten immer einen Rückfall auf die Control Klasse.

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

und dann gehen sie wie folgt beim Zeichnen:

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

Ich hoffe es hilft!

Beantwortet am 16/08/2008 um 22:28
quelle vom benutzer

stimmen
1

Sind irgendwelche der Control Verfahren , die für das? Das ist , was ich in der Regel für benutzerdefinierte gerenderte Kontrollen verwenden.

Beantwortet am 16/08/2008 um 20:58
quelle vom benutzer

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