8
votes

Comment puis-je modifier la couleur de la bordure et la taille d'un tabcontrol?

Comment puis-je modifier la taille de la bordure / style / couleur de mon tabcontrol pour le faire mélanger avec la couleur de fond de ma forme?

Je ne suis pas en mesure de trouver une propriété pour cela dans Visual Studio. Est-ce possible?


8 commentaires

Non, il n'y a pas de propriété de ce type. Je ne suis pas sûr de ce que le contrôle résultant ressemblerait; Je ne pense pas avoir jamais vu un. Qu'est-ce que vous essayez exactement d'accomplir?


@Cody La bordure de l'onglet a l'air bizarre, le côté gauche = côté droit = ​​bas = 2 pendant le haut = 1 Je veux que ce soit même de tous les côtés.


Je ne sais pas vraiment ce que vous décrivez. Je regarde un tabcontrol en ce moment et je ne vois pas que les frontières sont inégales. Changer la propriété Padding de votre Tabpage sera utile?


@Cody j'ai posté une capture d'écran


Oui, vous avez complètement oublié de mentionner que vous aviez affecté votre formulaire une couleur de fond personnalisée et que vous voyiez toujours la couleur standard de couleur du tabcontrol autour des bords.


Désolé, je viens de réaliser que ce n'est pas une frontière. Alors, y a-t-il un moyen autour de cela?


Je ne sais pas comment décrire correctement cette question, si quelqu'un m'a bien compris, veuillez éditer ma question de manière appropriée.


Utilisez probablement propriétaireDrawfixed


3 Réponses :


-3
votes
Me.TabPage1.BackColor = Color.Blue
Try this, it will be helpful to you.

1 commentaires

Non, cela change la couleur du Tabpage , pas le contrôle du conteneur. Vous verrez toujours la frontière autour des bords. Il a déjà une couleur personnalisée pour son Tabpage dans la capture d'écran.



9
votes

Le tabcontrol ne s'attend pas à être placé sur un fond de couleur personnalisé. Ce que vous voyez sur les bords est la couleur standard utilisée pour les commandes 3D. Normalement, vous ne remarqueriez pas que si vous n'aviez pas changé la couleur de fond de votre formulaire. Par défaut, ils ont la même couleur.

Je ne sais pas de bonne façon de résoudre ce problème. Le tabcontrol n'expose pas d'énormes options intégrées pour personnaliser son apparence. Vous allez avoir au propriétaire dessiner et peindre une couleur personnalisée vous-même.

Visitez Cette page pour différentes options et code d'exemple. Je soupçonne que le Complètement OwnerDraw Tabcontrol est ce dont vous avez besoin; Utilisez le code fourni et personnalisez-le à votre goût. Soyez reconnaissant que quelqu'un d'autre a déjà fait tout le travail pour vous, car la mise en œuvre de cette vous-même est non triviale.

Notez également que la modification du drawmode sur "OwnerDrawfixed" désactivera les thèmes. Votre contrôle ressemblera à la sortie de Windows 95, au lieu de se faire dessiner dans les styles de thème Luna ou Aero. Pas une grosse affaire si vous personnalisez complètement comment il est peint, mais une douleur à l'arrière si tout ce que vous voulez, c'est changer la couleur de fond.


2 commentaires

@ABCD: Bien sûr; Désolé, ce n'est pas aussi facile que vous espérez. En général, les contrôles WinForms n'étaient pas conçus pour des couleurs personnalisées; Par défaut, ils respectent le thème Windows actuel de l'utilisateur. Personnellement comme ça comme ça. Si j'arrive à haine la couleur bleue et que vous avez changé toutes les instances de bleu dans le thème par défaut au vert ou en rouge, et votre application s'échappe et éclabousse le bleu partout, je vais probablement être moins que ravi. Ne pas essayer de modifier les couleurs des contrôles intégrés ne fait pas seulement moins de travail pour vous, mais conserve également une expérience plus prévisible pour vos utilisateurs.


Ne vous inquiétez pas, l'application est totalement personnalisable, il peut changer de thème de couleur, image d'arrière-plan, modifier la taille de la bordure, modifier la taille de la police ... tout ce que je peux penser à :)



0
votes

Si vous essayez de cacher les bordures et de les mélanger avec le backcolor du formulaire, Placez le tabcontrol dans un conteneur comme un contrôle "Panneau" et apportez la taille du tabconrol plus grand que la taille de la commande du panneau, mais couvrait également les boutons d'onglets, et pour ce problème, vous pouvez ajouter un bouton pour chaque onglet et définir le bouton de clic événement pour modifier la propriété sélectionnée du Tabcontrol. Remarque: vous pouvez conserver le tabcontrol dans un emplacement où vous pouvez modifier l'onglet dans la conception du temps, ajoutez le petit code suivant sur l'événement de charge du formulaire pour masquer les boutons d'onglets de l'exécution:

Private Sub Form_Load(sender As Object, e As EventArgs) Handles Me.Load

TabControl.ItemSize = New Size(0, 1)
TabControl.SizeMode = TabSizeMode.Fixed

End Sub


0 commentaires