Archana Parate Ответов: 3

Как chnage выбранный цвет заголовка вкладки в vb.net


Когда я выберите элемент управления TabControl на новые, я просто хочу, чтобы изменить только текст заголовка цвет выбранной вкладки в vb.net

Indivara

Гугл.

Напр.:
http://www.tek-tips.com/viewthread.cfm?qid=982090&страница=282

3 Ответов

Рейтинг:
2

Prerak Patel

Набор DrawMode = OwnerDrawFixed [of TabControl]
и использовать DrawItem чтобы нарисовать заголовки вкладок, как показано на рисунке.

Private Sub TabControl1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles TabControl1.DrawItem
  Dim tabctl As TabControl = DirectCast(sender, TabControl)
  Dim g As Graphics = e.Graphics
  Dim font As Font = tabctl.Font
  Dim brush As New SolidBrush(Color.Black)
  Dim tabTextArea As RectangleF = RectangleF.op_Implicit(tabctl.GetTabRect(e.Index))
  If tabctl.SelectedIndex = e.Index Then
    font = New Font(font, FontStyle.Bold)
    brush = New SolidBrush(Color.Red)
  End If
  g.DrawString(tabctl.TabPages(e.Index).Text, font, brush, tabTextArea)
End Sub


Vasssek

Хммм, а как насчет tabcontrol для c# compact framework ? Свойства DrawMode не существует...

Рейтинг:
1

Eduardo Sobrinho WKE

Отличный пост! Я сделал некоторые изменения по выравниванию, цветам и цвету фона. За то, что дал мне мой плохой английский. Я говорю по-португальски.

(Отимо пост! Физ algumas modificacoes де alinhamento, стержней е кор ду Пасу-фунду. Perdoe-me o meu Ingles ruim. Фало Португальский)

'cor do tabcontrole
    Private Sub TabControl_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ContasTabControl.DrawItem

        Dim tabContas As TabControl = DirectCast(sender, TabControl)
        Dim sTexto As String = tabContas.TabPages(e.Index).Text
        Dim g As Graphics = e.Graphics
        Dim fonte As Font = tabContas.Font
        Dim format = New System.Drawing.StringFormat
'CHANGES HERE...
        format.Alignment = StringAlignment.Center
        format.LineAlignment = StringAlignment.Center
        Dim pincel As New SolidBrush(Color.Black)
'RENEMED VARIEBLE HERE...
        Dim retangulo As RectangleF = RectangleF.op_Implicit(tabContas.GetTabRect(e.Index))
        If tabContas.SelectedIndex = e.Index Then
            fonte = New Font(fonte, FontStyle.Bold)
            pincel = New SolidBrush(Color.Black)
'CHANGED BACKGROUN COLOR HERE...
            g.FillRectangle(Brushes.White, retangulo)
        End If
        g.DrawString(sTexto, fonte, pincel, retangulo, format)
    End Sub


Рейтинг:
0

Michael DeVoe

Кроме того, если вы хотите Жирный шрифт выбранной вкладки, это может привести к переносу слов. Чтобы исправить это, установите шрифт элемента управления полужирным шрифтом, чтобы он знал, насколько велика вкладка. Затем в вашем методе DrawItem просто установите шрифт обратно в нормальное состояние для невыбранных вкладок.