Pergunta

Aplicação de Formas My Windows usa a seguinte linha padrão de código para que estilos visuais (theming) está habilitado para toda a aplicação ...

Application.EnableVisualStyles();

... que funciona muito bem, todos os controles têm uma aparência temático em vez do cinza encouraçado plana que você teria de outra forma. Mas eu preciso desligar estilos visuais para apenas uma única instância de controle. Eu não pode remover a linha acima, porque então eu perderia theming de todos os controles. É possível remover theming de uma única instância de controle?

FYI: Como acontece Quero remover theming de uma instância DateTimePicker por isso, se a resposta geral não é, exceto para o DateTimePicker então isso seria bom o suficiente. Estou feliz de usar invocação de plataforma se a solução envolve a brincar com o controle no nível mais baixo.

Foi útil?

Solução

Parece que você pode usar SetWindowTheme em um controle:

[DllImport("uxtheme", ExactSpelling = true, CharSet = CharSet.Unicode)]
public extern static Int32 SetWindowTheme (IntPtr hWnd, 
              String textSubAppName, String textSubIdList);

yourControl.FlatStyle = FlatStyle.System;
SetWindowTheme(yourControl.Handle, "", "");

Original CodeProject artigo

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top