Jak k tomu, aby ovládací prvek vypadat ComboBoxu se zapnutým vizuálních stylů?

hlasů
28

Mám ovládací prvek, který je modelován na ComboBox . Chci k tomu, aby ovládací prvek, takže kontrola hranic vypadá, že standardní ComboBox Windows . Konkrétně jsem sledoval v dokumentaci MSDN a všechny vykreslování ovládacího prvku je správné, kromě zobrazování, když je ovládání blokováno.

Jen aby bylo jasno, tohle je pro systém s vizuální styly povoleny. Také všechny části kontroly vykreslit správně, s výjimkou okraje kolem postiženého kontrole, která neodpovídá zakázané ComboBox ohraničení barvu.

Já používám VisualStyleRenderer třídu. MSDN navrhuje použití VisualStyleElement.TextBoxprvek pro textové pole části ComboBox kontroly, ale standardní zakázané textové pole a standardní zakázané ComboBox lehce vyvodit jinak (jeden má světle šedý rámeček, druhý světle modré hranice).

Jak mohu získat správné vykreslení ovládacího prvku v zakázaném stavu?

Položena 05/08/2008 v 22:19
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
8

Nejsem si 100% jistý, jestli to je to, co hledáte, ale měli byste se podívat na VisualStyleRenderer v System.Windows.Forms.VisualStyles-názvů.

  1. VisualStyleRenderer třída (MSDN)
  2. Postup: vykreslení vizuální styl Element (MSDN)
  3. VisualStyleElement.ComboBox.DropDownButton.Disabled (MSDN)

Vzhledem k tomu, VisualStyleRenderer nebude fungovat v případě, že uživatel nemusí vizuálních stylů povoleny (on / ona by mohla být spuštěna ‚klasický režim‘ nebo operativní systém před Windows XP), měli byste mít vždy záložní na třídu ControlPaint.

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

a pak to takhle při kreslení:

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

Doufám, že to pomůže!

Odpovězeno 16/08/2008 v 22:28
zdroj uživatelem

hlasů
1

Jsou některé z ControlPaint metod užitečné pro to? To je to, co jsem obvykle používají pro ovládací prvky na zakázku vykreslen.

Odpovězeno 16/08/2008 v 20:58
zdroj uživatelem

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