2009-12-01 4 views
2

J'ai un tabcontrol utilisé pour afficher plusieurs fichiers d'image dans une application. Je voudrais supprimer le titre de la tabulation quand il n'y a qu'une seule page affichée, donc je peux utiliser cet espace d'écran pour l'image. (Cela revient à désélectionner "Toujours afficher la barre d'onglets" dans Firefox.)Tabcontrol: Comment pouvez-vous supprimer le titre de la page?

Est-ce possible avec le tabcontrol? Ou suis-je préférable d'utiliser un contrôle de panneau quand un seul fichier (onglet) est ouvert?

Répondre

6

Oui, c'est possible. Ajoutez une nouvelle classe à votre projet et collez le code ci-dessous. Compiler. Déposez le nouveau contrôle du haut de la boîte à outils sur votre formulaire.

using System; 
using System.Windows.Forms; 

public class MyTabControl : TabControl { 
    private int mPages = 0; 
    private void checkOnePage() { 
    if (IsHandleCreated) { 
     int pages = mPages; 
     mPages = this.TabCount; 
     if ((pages == 1 && mPages > 1) || (pages > 1 && mPages == 1)) 
     this.RecreateHandle(); 
    } 
    } 
    protected override void OnControlAdded(ControlEventArgs e) { 
    base.OnControlAdded(e); 
    checkOnePage(); 
    } 
    protected override void OnControlRemoved(ControlEventArgs e) { 
    base.OnControlRemoved(e); 
    checkOnePage(); 
    } 
    protected override void WndProc(ref Message m) { 
    // Hide tabs by trapping the TCM_ADJUSTRECT message 
    if (m.Msg == 0x1328 && !DesignMode && this.TabCount == 1) m.Result = (IntPtr)1; 
    else base.WndProc(ref m); 
    } 
} 
+0

Il fonctionne! (Même en vb.) – xpda

+0

Bon là-bas! +1 –

+0

Cela semble fonctionner correctement sans appeler checkOnePage. Y a-t-il une raison pour que je garde ça? – xpda

0

Je ne me souviens d'aucun moyen de cacher l'étiquette de l'onglet. Ma recommandation:

Avez-contenu de votre onglet dans les panneaux. Quand un seul onglet, déplacez le panneau mis pour remplacer le tabcontrol ou quelque chose de cette nature.

Questions connexes