2009-12-18 6 views
2

J'ai un comportement bizarre avec un TabControl aligné à gauche dans VB.NET. Capture d'écran:Problème avec l'alignement TabControl dans VB.NET

alt text

Ce que je voulais était d'avoir les onglets littéralement de la même manière qu'ils seraient si une rotation de 90 degrés vers la gauche.

Cela a-t-il quelque chose à voir avec le fait que je ne suis pas (Dieu interdit) d'utiliser le thème XP standard? Une solution pour le faire fonctionner? (Même si c'est difficile, mais je ne veux pas un contrôle qui a un style contrasté, je veux que le programme semble cohérent)

Merci!

Bonne fin

alt text

Répondre

4

Ok, je résolu la question. Si quelqu'un d'autre a le même problème, utilisez this control. C'est gratuit sous licence MIT. Capture d'écran par l'auteur:

alt text http://dotnetrix.co.uk/images/tabcontrolexvs.png

Notez que l'auteur a fait deux contrôles. Mon conseil: le second a un support incorrect pour cleartype (Il tourne après le rendu sous-pixel), mais il est plus facile à utiliser, et a un meilleur contrôle de remplissage. Fonce! =)

EDIT Si vous utilisez C++ et que vous en avez besoin pour cela, il existe une approche. Image du résultat: alt text http://www.codeguru.com/dbfiles/get_image.php?id=6385&lbl=CXPTABCTRL_GIF&ds=20040309
L'auteur était très descriptif sur la façon dont il l'a fait, ce qui est bon, par exemple: alt text http://www.codeguru.com/dbfiles/get_image.php?id=6385&lbl=CXPTABCTRL_RIGHT_GIF&ds=20040309
This est le lien vers l'article.

Une autre très bonne approche est le composant VisualStyles polyvalent de SkyBound. On dirait que les binaires sont gratuits mais la source n'est pas, très équitable. Je vais y jeter un coup d'œil plus tard, mais si vous avez besoin de corriger des bugs visuels, cela semble être un choix.
alt text http://dev.skybound.ca/Products/VisualStyles/Image1.png
des auteurs:

d'abord et avant tout, il CASSE XP bugs thème, silencieux, efficace et automatiquement. Mais il fournit également un ensemble simple de classes que vous pouvez utiliser pour dessiner vos propres contrôles en utilisant l'API de thème Windows XP.

Vérifiez this. et more de l'auteur.

Problème résolu !! = D

2

Oui, c'est un bug dans le rendu des styles visuels pour le contrôle de tabulation. On dirait que vous avez déjà trouvé un remplaçant. Une autre approche à faible impact consiste à désactiver sélectivement les styles visuels pour le contrôle. Il reviendra au gris de la bataille, dessinant correctement les onglets verticaux. Le contenu de la page d'onglet s'affichera toujours correctement.

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

Merci, mais sans aucun style, il semble horrible. Je déteste utiliser des applications qui semblent avoir été fabriquées il y a 10 ans. Et c'est un gros bug qui rend inutilisable tout alignement de tabulation prêt à l'emploi, pour une raison simple; la seule chose qui rend l'alignement gauche, bas ou droit des onglets utilisable, est esthétique. –

+1

Eh bien, je ne suis pas en désaccord. Vous ne savez pas ce qui est arrivé au programmeur Microsoft qui a écrit ce code, il a l'impression qu'il a été écrasé par un bus. C'est le travail de tout le monde de trouver une solution de contournement pour l'accident de bus, ce n'est pas une bonne chose. Utilisez celui que vous avez trouvé à votre discrétion, je ne peux que recommander une solution moins susceptible de casser un jour. –

+0

+2 à ce sujet! Pour chaque bogue qu'ils produisent, des milliers de solutions de contournement sales doivent être faites par d'innombrables développeurs. Je suppose que cela a à voir avec laisser la place pour vendre plus de produits et faire des "mises à jour" une question de correction de bugs. –