2009-09-03 10 views
2

J'ai un onglet de contrôle où j'utilise la peinture de l'utilisateur pour supprimer le scintillement. C'est très bien en termes de suppression de scintillement, mais les largeurs de tabulation ne sont pas correctes. Il y a une grande quantité de remplissage autour du texte qui s'agrandit à mesure que la longueur du texte augmente. C'est comme si la largeur de l'onglet reposait sur une police plus grande que celle qui est dessinée. J'ai essayé de changer la taille de la police sur le contrôle de tabulation, mais cela n'a aucun effet sur les largeurs de tabulation..net tabcontrol tab tailles

Comment le contrôle de tabulation détermine-t-il les largeurs des onglets? Y at-il quelque chose que je peux remplacer afin que je puisse fournir les largeurs de tabulation au contrôle de tabulation?

+0

Avez-vous jamais résoudre ce problème? Je rencontre le même problème, et pour l'instant, n'ai pas encore résolu cela – series0ne

Répondre

0

Avez-vous essayé d'activer le double tampon pour supprimer le scintillement avant d'utiliser la peinture personnalisée?

Essayez d'appeler cette fonction dans votre constructeur de contrôle et de voir comment cela fonctionne:

private void EnableDoubleBuffering() 
{ 
    this.SetStyle(ControlStyles.DoubleBuffer | 
     ControlStyles.UserPaint | 
     ControlStyles.AllPaintingInWmPaint, 
     true); 
    this.UpdateStyles(); 
} 
+0

La définition de UserPaint spécifie que le contrôle doit être dessiné par la méthode OnPaint sur la sous-classe. Sans une méthode OnPaint, les onglets ne sont pas dessinés. Le réglage de DoubleBuffer ne supprime pas le scintillement. – Glenn

0

TabControl possède une propriété appelée ItemSize qui est en effet utilisé pour informer le TabControl à la taille de ses onglets.

0

Pour changer la taille de l'onglet, vous devez faire ce que dit Ian (ensemble taille requise dans ItemSize) et définir la propriété SizeMode Fixe