2008-11-18 5 views
4

J'ai un TabControl dans un TabControl. Je veux que le TabControl externe affiche ses onglets sur la gauche. Toutefois, avec l'activation des styles visuels, les contrôles TabC alignés à gauche ne s'affichent pas correctement. Puis-je désactiver les styles visuels pour seulement TabControl externe? Je suis au courant des remplacements TabControl tiers - ce n'est pas ce que je suis après.Comment désactiver les styles visuels pour un seul contrôle, et pas ses enfants?

Répondre

17

Ajoutez une nouvelle classe à votre projet et collez le code ci-dessous. Construire. Déposez le nouveau contrôle du haut de la boîte à outils sur votre formulaire. Les styles visuels des contrôles enfants sont conservés.

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); 
    } 
} 
+0

Exactement ce que j'étais après - brillant, merci! – Simon

+0

Comment pouvez-vous réaliser cela pour activer les styles visuels pour un bouton, j'ai désactivé les styles pour que ma barre de progression ait des couleurs différentes. Mais j'aimerais que mon tabcontrol et mes boutons aient le style le plus récent. Est-ce possible? –

+0

Eh bien, vous le faites dans le mauvais sens. Utilisez cette même approche mais uniquement pour les contrôles spécifiques dont vous voulez désactiver le style visuel. Comme cette barre de progression. –

Questions connexes