Onglet Vertical de Contrôle avec le texte horizontal en Winforms
Je voudrais avoir les onglets sur mon TabControl affichée sur la gauche, ou parfois à droite.
À la différence du Système.De Windows.Les formulaires.TabControl, cependant, je voudrais que le texte pour rester horizontal au lieu d'être tourné de 90 ou 270 degrés à l'horizontale.
Voici quelques photos illustrant le concept
Même si j'ai pu écrire du code pour faire cela moi-même en environ une heure ou deux, j'ai juste pensé que je voudrais vous demander d'abord si il n'y a aucune existant Winforms contrôle qui implémente cette fonctionnalité.
NB: Aucune solution existante doit être de préférence non-commercial.
Grâce.
OriginalL'auteur Alex Essilfie | 2011-09-21
Vous devez vous connecter pour publier un commentaire.
Je ne sais pas quelle est la solidité de ce qui est et je ne peux pas prétendre avoir créé, mais...
http://www.dreamincode.net/forums/topic/125792-how-to-make-vertical-tabs/
Voici un moyen de le faire.
Donc tout d'abord nous allons changer son alignement à Gauche, par la définition de la propriété:
Alignement = Gauche
Si vous avez des thèmes XP activé, vous pouvez remarquer l'étrange mise en page de l'Onglet Contrôle. Ne vous inquiétez pas, nous allons le faire très bien.
Comme vous l'avez peut-être remarqué que les Onglets sont à la verticale, et notre exigence est à l'horizontale. Donc, nous pouvons changer la taille des Onglets. Mais avant de faire cela, nous devons définir la propriété SizeMode que,
SizeMode = Fixe
Maintenant, nous pouvons changer la taille à l'aide de la ItemSize propriété,
ItemSize = 30, 120
Largeur = 30 et Hauteur = 120
Après le réglage de l'Alignement = Gauche, Onglet contrôle tourne les Onglets qui provoque la Largeur et la Hauteur semble être inversée. C'est pourquoi, lorsque nous augmenter la Hauteur, nous voyons que la largeur augmente et lorsque l'on augmente la largeur, la hauteur est effectué.
Maintenant le Texte sera également l'affichage, mais verticalement. Malheureusement, il n'existe pas de moyen simple de résoudre ce problème. À cette fin, nous devons écrire le Texte par nous-mêmes. Pour ce faire, nous allons d'abord définir les DrawMode
DrawMode = OwnerDrawFixed
01
avez-vous fait exactement même que les captures d'écran que vous avez compris? si oui, pouvez-vous partager le code?
Je n'ai pas envie d'être exactement comme indiqué dans les captures d'écran, mais j'ai été en mesure de l'obtenir pour fonctionner assez bien pour moi. Je vais envoyer mon code plus tard aujourd'hui ou dans un délai de trois jours max dans l'intérêt de l'ensemble de la communauté.
Je vais être en attente pour le regarder. En fait, j'ai un urgent devoir l'exige, si vous pouvez partager avec vous aujourd'hui, ce serait gr8 de l'aide.
J'ai téléchargé le code. Voir ma réponse pour plus de détails.
OriginalL'auteur Rob P.
J'ai décidé de partager le code que j'ai développé depuis plus de certaines personnes, comme Amit Andharia, souhaite en bénéficier.
C'est le résultat après que j'ai mis en œuvre Rob P. la réponse de.
Notes De Version:
Le code peut être téléchargé à partir de ici.
J'en ai écrit une réplique de Visual Studio style mais j'ai malheureusement perdu le code, donc j'ai eu de bug-fix ce l'un et l'emballer dans un
.vb
fichier pour une utilisation. Si vous le désirez, je pourrais remettre sur pied le VS-style, mais je ne peux pas vous assurer d'arriver très bientôt.Grâce à ce qui serait gr8 si vous pouvez faire quelque chose de similaire et de partager.
Avez-vous un exemple de code pour c#
Je n'ai pas écrit une version C#. Je vais devoir travailler sur la conversion et de vous fournir le lien dans un jour ou deux.
OriginalL'auteur Alex Essilfie
C'est le code pour un onglet personnalisé de contrôle que je suis assez friand. Vous devez copier et coller ce code dans une nouvelle classe, avant de recompiler le projet. Vous verrez une nouvelle custom de contrôle de l'utilisateur affiché dans votre boîte à outils.
OriginalL'auteur Dwayne Reid
Il y a un tutoriel fourni par Microsoft pour le faire avec l'existant TabControl sur MSDN, avec des exemples de code en C# et Visual Basic .NET. Leur méthode est basée sur l'utilisation de la propriétaire de dessin. Résumant leurs étapes ci-dessous:
Définir le TabControl est Alignement propriété Droit.
S'assurer que tous les onglets sont de la même largeur horizontale par le réglage de la SizeMode propriété Fixe.
Définir la ItemSize bien à votre taille préférée pour les onglets, en gardant à l'esprit que la largeur et la hauteur sont inversés.
Définir la DrawMode propriété OwnerDrawFixed.
Définir un gestionnaire d'événements pour le TabControl est DrawItem de l'événement, et le lieu de votre propriétaire le code de dessin dans il y de dicter la façon dont chaque onglet doit être affiché. Leur exemple de code C# pour le gestionnaire d'événement est reproduit ci-dessous pour plus de commodité (il suppose que votre TabControl est nommé
tabControl1
:Vous pouvez probablement expérimenter avec votre
ItemSize
propriété et le_tabFont
valeur dans le code ci-dessus pour affiner vos onglets de l'apparence à tout ce dont vous avez besoin. De même amateur de style, je vous recommande de regarder cet autre article MSDN comme un point de départ.(Source: Comment: Côté Affichage Aligné à Onglets avec TabControl (MSDN))
Je ne dirais pas exactement la même. Tout d'abord, mon code fourni est en C#, alors qu'il était prévu dans VB.NET. Deuxièmement, je suis l'aide de MSDN comme ma source, par opposition à un post sur le forum d'ailleurs, donc j'imagine que la version du code que je vais présenter est plus susceptible de représenter des meilleures pratiques pour aborder cette. Troisièmement, il y a de subtiles différences dans le code si vous vous souciez de regarder (à l'aide de
GetTabRect()
au lieu dee.Bounds
, code pour tenir compte de certains etats, etc.). En gros, j'ai posté ma réponse parce que je croyais que les informations que j'avais à l'action a été plus complète et de meilleure qualité.OriginalL'auteur Christopher Kyle Horton