Как отключить визуальные стили только для одного элемента управления, а не его дочерних элементов? - PullRequest
6 голосов
/ 18 ноября 2008

У меня есть TabControl в TabControl. Я хочу, чтобы внешний TabControl показывал свои вкладки слева. Однако при включенных визуальных стилях выровненные по левому краю элементы управления TabControls отображаются неправильно. Можно ли отключить визуальные стили только для внешнего TabControl?

Мне известны сторонние замены TabControl - это не то, что мне нужно.

1 Ответ

22 голосов
/ 18 ноября 2008

Добавьте новый класс в ваш проект и вставьте код, показанный ниже. Построить. Перетащите новый элемент управления из верхней части панели инструментов на форму. Визуальные стили дочерних элементов управления сохранены.

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);
  }
}
...