ورود

View Full Version : گفتگو: تغییر رنگ پس زمینه TabControl



ROSTAM2
جمعه 25 آذر 1401, 21:36 عصر
سلام.

برای تغییر رنگ زمینه TabControl از این کد می شه استفاده کرد برای تغییر رنگ کامل هر TabPage هم در دیزاینر خصوصیت BackColor :

در ضمن DrawMode از TabControl هم تغییر داده بشه.


Dim PutBackColor As Boolean = False
Private Sub TabControl1_DrawItem(sender As System.Object, e As System.Windows.Forms.DrawItemEventArgs) Handles TabControl1.DrawItem
If Me.PutBackColor = False Then
e.Graphics.FillRectangle(New SolidBrush(<YourColor>), 0, 0, Me.Width, Me.Height)
Me.PutBackColor = True
End If
e.Graphics.FillRectangle(New SolidBrush(<YourColor>), e.Bounds.X - 2, e.Bounds.Y - 2, e.Bounds.Width + 2, e.Bounds.Height + 2)
e.Graphics.DrawString(Me.TabControl1.TabPages(e.In dex).Text, e.Font, New SolidBrush(<YourForeColor>), e.Bounds.X + 5, e.Bounds.Y + 5)
If e.State = DrawItemState.Selected Then
Me.PutBackColor = False
End If
End Sub


154364

برای انتخاب رنگ های خوشرنگ و جذاب به این سایت برید: Dark Color Palettes - Color Hunt (https://colorhunt.co/palettes/dark)

ROSTAM2
شنبه 26 آذر 1401, 21:40 عصر
سلام به همه
دستور قبلی یک مشکل داشت که درستش کردم.

پرستو پارسایی
پنج شنبه 24 فروردین 1402, 20:18 عصر
سلام آیا به این شکل هم میشه اجرا کرد ؟
Private TabBackColor As Color = <YourColor>
Private TabForeColor As Color = <YourForeColor>


Private Sub TabControl1_DrawItem(sender As System.Object, e As System.Windows.Forms.DrawItemEventArgs) Handles TabControl1.DrawItem
If e.Index = Me.TabControl1.SelectedIndex Then
e.Graphics.FillRectangle(New SolidBrush(TabForeColor), e.Bounds.X - 2, e.Bounds.Y - 2, e.Bounds.Width + 2, e.Bounds.Height + 2)
Else
e.Graphics.FillRectangle(New SolidBrush(TabBackColor), e.Bounds.X - 2, e.Bounds.Y - 2, e.Bounds.Width + 2, e.Bounds.Height + 2)
End If
e.Graphics.DrawString(Me.TabControl1.TabPages(e.In dex).Text, e.Font, Brushes.Black, e.Bounds.X + 5, e.Bounds.Y + 5)
End Sub

ROSTAM2
جمعه 25 فروردین 1402, 08:11 صبح
سلام آیا به این شکل هم میشه اجرا کرد ؟
Private TabBackColor As Color = <YourColor>
Private TabForeColor As Color = <YourForeColor>


Private Sub TabControl1_DrawItem(sender As System.Object, e As System.Windows.Forms.DrawItemEventArgs) Handles TabControl1.DrawItem
If e.Index = Me.TabControl1.SelectedIndex Then
e.Graphics.FillRectangle(New SolidBrush(TabForeColor), e.Bounds.X - 2, e.Bounds.Y - 2, e.Bounds.Width + 2, e.Bounds.Height + 2)
Else
e.Graphics.FillRectangle(New SolidBrush(TabBackColor), e.Bounds.X - 2, e.Bounds.Y - 2, e.Bounds.Width + 2, e.Bounds.Height + 2)
End If
e.Graphics.DrawString(Me.TabControl1.TabPages(e.In dex).Text, e.Font, Brushes.Black, e.Bounds.X + 5, e.Bounds.Y + 5)
End Sub
سلام
اگر منظورتون متغیر
PutBackColor هست که برای عملکرد صحیح متود DrawString بکار گرفته شده است.