Como faço para desativar estilos visuais para apenas um controle, e não seus filhos?

StackOverflow https://stackoverflow.com/questions/298486

  •  08-07-2019
  •  | 
  •  

Pergunta

Eu tenho um TabControl dentro de um TabControl. Eu quero que o TabControl exterior para mostrar suas guias do lado esquerdo. No entanto, com estilos visuais ativados, TabControls alinhado à esquerda não são exibidos corretamente. Posso desativar estilos visuais para apenas o TabControl exterior?

Estou ciente das substituições TabControl de terceiros - não é isso que eu estou atrás

.
Foi útil?

Solução

Adicione uma nova classe ao seu projeto e cole o código mostrado abaixo. Construir. Largar o novo controle a partir do topo da caixa de ferramentas para seu formulário. estilos visuais dos controles filho são preservados.

using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;

public class FixedTabControl : TabControl {
  [DllImportAttribute("uxtheme.dll")]
  private static extern int SetWindowTheme(IntPtr hWnd, string appname, string idlist);

  protected override void OnHandleCreated(EventArgs e) {
    SetWindowTheme(this.Handle, "", "");
    base.OnHandleCreated(e);
  }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top