Hello,
Ich habe ein TabControl erstellt, welches von TabControl erbt:
Bezug auf den TabPage-Text:
Ich habe die Eigenschaft Text (die geerbt wurde), die ich ganz normal ohne Code-Änderung benutzen kann. Im Designer ändere ich also den Text des gewünschten Tabs und siehe da, er ändert sich.
Ich habe aber auch die Eigenschaft ForeColor (des Textes), welche sich nicht mitändert.
Meine Frage: Wie kann ich dem Control mitteilen, dass er die bereits vorhandene Property dafür benutzen soll, die ForeColor des Textes zu ändern, welche geerbt wurde?
Ich könnte zwar eine neue Property anlegen, aber wozu, wenn es sie ja bereits gibt.
Geht das ?
Vielen Dank!
Ich habe ein TabControl erstellt, welches von TabControl erbt:
VB.NET-Quellcode
- Public Class TabControlKasse
- Inherits TabControl
- Dim _SelectedTabColor As Color = Color.Red
- Dim _UnselectedTabColor As Color = Color.Blue
- Dim _BackgroundColor As Color = Color.Gainsboro
- Sub New()
- SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.OptimizedDoubleBuffer Or ControlStyles.ResizeRedraw Or ControlStyles.UserPaint, True)
- DoubleBuffered = True
- SizeMode = TabSizeMode.Fixed
- ItemSize = New Size(30, 120)
- End Sub
- Protected Overrides Sub CreateHandle()
- MyBase.CreateHandle()
- Alignment = TabAlignment.Left
- End Sub
- Protected Overrides Sub OnPaint(e As PaintEventArgs)
- Dim b As New Bitmap(Width, Height)
- Dim g As Graphics = Graphics.FromImage(b)
- g.Clear(_BackgroundColor)
- For i = 0 To TabCount - 1
- Dim TabRectangle As Rectangle = GetTabRect(i)
- If i = SelectedIndex Then
- 'Tab ist ausgewählt
- g.FillRectangle(New SolidBrush(_SelectedTabColor), TabRectangle)
- Else
- 'Tab ist nicht ausgewählt
- g.FillRectangle(New SolidBrush(_UnselectedTabColor), TabRectangle)
- End If
- g.DrawString(TabPages(i).Text, Font, New SolidBrush(Color.Black), TabRectangle, New StringFormat With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center})
- Next
- e.Graphics.DrawImage(b.Clone, 0, 0)
- g.Dispose() : b.Dispose()
- MyBase.OnPaint(e)
- End Sub
- #Region "Eigenschaften"
- ''' <summary>
- ''' Farbe des selektierten Tabs
- ''' </summary>
- ''' <value>Farbe</value>
- Public Property SelectedTabColor() As Color
- Get
- Return Me._SelectedTabColor
- End Get
- Set(ByVal value As Color)
- Me._SelectedTabColor = value
- End Set
- End Property
- ''' <summary>
- ''' Farbe der nicht selektierten Tabs
- ''' </summary>
- ''' <value>Farbe</value>
- Public Property UnselectedTabsColor() As Color
- Get
- Return Me._UnselectedTabColor
- End Get
- Set(ByVal value As Color)
- Me._UnselectedTabColor = value
- End Set
- End Property
- ''' <summary>
- ''' Farbe des Hintergrundes
- ''' </summary>
- ''' <value>Farbe</value>
- Public Property BackgroundColor() As Color
- Get
- Return Me._BackgroundColor
- End Get
- Set(ByVal value As Color)
- Me._BackgroundColor = value
- End Set
- End Property
- #End Region
- End Class
Bezug auf den TabPage-Text:
Ich habe die Eigenschaft Text (die geerbt wurde), die ich ganz normal ohne Code-Änderung benutzen kann. Im Designer ändere ich also den Text des gewünschten Tabs und siehe da, er ändert sich.
Ich habe aber auch die Eigenschaft ForeColor (des Textes), welche sich nicht mitändert.
Meine Frage: Wie kann ich dem Control mitteilen, dass er die bereits vorhandene Property dafür benutzen soll, die ForeColor des Textes zu ändern, welche geerbt wurde?
Ich könnte zwar eine neue Property anlegen, aber wozu, wenn es sie ja bereits gibt.
Geht das ?
Vielen Dank!
Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von „TRiViUM“ ()