Comment changer la couleur d'arrière-plan de l'espace inutilisé onglet en C#, winforms?
Ex
|Tab1|Tab2|Tab3| { }
| |
| |
| |
| |
|_____________________|
Je suis en mesure de changer la backcolor
et forecolor
de Tab
.. mais je veux changer la couleur de ce { } -- > espace Vide est-ce possible de le faire. .. Il montre par défaut winforms couleur..aidez-moi en dis..
private void Form1_Load(object sender, EventArgs e)
{
}
private void tabControl1_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e)
{
Font fntTab;
Brush bshBack;
Brush bshFore;
if ( e.Index == this.tabControl1.SelectedIndex)
{
fntTab = new Font(e.Font, FontStyle.Bold);
bshBack = new System.Drawing.Drawing2D.LinearGradientBrush(e.Bounds, SystemColors.Control, SystemColors.Control, System.Drawing.Drawing2D.LinearGradientMode.BackwardDiagonal);
bshFore = Brushes.Black;
//bshBack = new System.Drawing.Drawing2D.LinearGradientBrush(e.Bounds, Color.LightSkyBlue , Color.LightGreen, System.Drawing.Drawing2D.LinearGradientMode.BackwardDiagonal);
//bshFore = Brushes.Blue;
}
else
{
fntTab = e.Font;
bshBack = new SolidBrush(Color.Red);
bshFore = new SolidBrush(Color.Aqua);
//bshBack = new SolidBrush(Color.White);
//bshFore = new SolidBrush(Color.Black);
}
string tabName = this.tabControl1.TabPages[e.Index].Text;
StringFormat sftTab = new StringFormat();
e.Graphics.FillRectangle(bshBack, e.Bounds);
Rectangle recTab = e.Bounds;
recTab = new Rectangle( recTab.X, recTab.Y + 4, recTab.Width, recTab.Height - 4);
e.Graphics.DrawString(tabName, fntTab, bshFore, recTab, sftTab);
}
Je ne pense pas que la norme .NET TabControl vous permet de définir cet "espace libre" à droite des onglets spécifiques à une couleur d'arrière-plan - c'est transparent et montre juste la forme de la couleur d'arrière-plan. Si vous vraiment besoin de cela, vous aurez à trouver un autre TabControl qui prend en charge cette fonctionnalité
modifier l'Apparence de la Propriété à la "Normale" ça va changer transparent
Il y a plus de bonnes raisons pas pour faire ce qu'il y a à faire.
L'OP est à son contrôle onglet DrawMode à OwnerDrawFixed pour personnaliser le style de l'onglet contrôle. Cependant, cela n'est plus définit l'arrière-plan de l'espace vide à la transparence et à la place, il la définit système.contrôle
modifier l'Apparence de la Propriété à la "Normale" ça va changer transparent
Il y a plus de bonnes raisons pas pour faire ce qu'il y a à faire.
L'OP est à son contrôle onglet DrawMode à OwnerDrawFixed pour personnaliser le style de l'onglet contrôle. Cependant, cela n'est plus définit l'arrière-plan de l'espace vide à la transparence et à la place, il la définit système.contrôle
OriginalL'auteur Aravind | 2012-08-06
Vous devez vous connecter pour publier un commentaire.
Je pense que la seule façon de donner à cet espace un de couleur est de remplacer la
OnPaintBackground
méthode de la fenêtre de sorte qu'il suffit de coller ce formulaire (fenêtre)vous devez également modifier l'Apparence de la Propriété à la "Normale"
pour moi il fonctionne parfaitement
vous n'avez pas à vous venez d'écrire le code, ou si vous utilisez visual studio écrire
protected override
et de l'espace, il vous donne les Méthodes pour remplacer, mais "juste écrire | coller le code" la méthode sera automatiquement remplacée @user1484603J'ai mis à jour mon code @user1484603
Seddik j'ai essayé ça aussi...mais sa ne marche pas pour moi.. comme tu dit je remplacer cette méthode et collé le code...mais vide de l'espace n'est pas peint...
essayez de créer un nouveau projet d'ajouter que cette TabControl & mon code et voir si cela fonctionne, dans mon cas, j'ai une fenêtre avec un TabControl, il fonctionne, Même si j'écris ton code ajouté le OnPaintBackground Méthode de travail parfaitement
OriginalL'auteur S3ddi9
Essayez d'ajouter le code suivant à votre gestionnaire d'événements DrawItem. N'oubliez pas de mettre le DrawMode "OwnerdrawFixed".
Vous pourriez avoir à modifier un peu pour couvrir une partie des marges qui ne sont pas peints.
"Cette réponse est beaucoup mieux qu'avant. Mais le tabCtrl n'est pas défini. Il doit être contrôleonglet1 de contrôle.
OriginalL'auteur Roast
vous pouvez également créer un tabcontrol comme vous l'avez fait
OriginalL'auteur S3ddi9