Цвет фона для Tabcontrol в приложении c # windows

2

Я пытаюсь добавить цвет шрифта и цвет фона для вкладок, созданных в tabcontrol, а также цвета фона для пустого места без вкладок. Потому что мой tabcontrol растянут до размера моей полноэкранной формы. Скажем, если в tabcontrol создана только одна вкладка, цвет фона вкладки должен быть синего цвета, а остальное место tabcontrol должно быть темно-синего цвета. Цвет по умолчанию для этого является серым, что очень уродливо.

Я использую приведенный ниже код, который отлично подходит для цвета шрифта и цвета фона вкладки. Но я не получаю цвет bg для остальной части мест.

Мне что-то не хватает?

     private void tabControl1_DrawItem_1(object sender, DrawItemEventArgs e)
    {
            //set color for Background
            Brush BG_BackBrush = new SolidBrush(Color.FromArgb(111, 111, 111)); //Set background color 
            //Rectangle BG_r = e.Bounds;
            Rectangle BG_r = new Rectangle(1682, 34, this.Width - 2, this.Height - 2);
            BG_r = new Rectangle(BG_r.X, BG_r.Y + 8, BG_r.Width, BG_r.Height - 3);
            e.Graphics.FillRectangle(BG_BackBrush, e.Bounds);


            //set color for Tabs
            Font TabFont;
            Brush BackBrush = new SolidBrush(Color.FromArgb(147, 188, 200)); //Set background color
            Brush ForeBrush = new SolidBrush(Color.FromArgb(11, 51, 106));//Set foreground color  


            if (e.Index == TaskBarRef.tabControl1.SelectedIndex)
            {
                TabFont = new Font(e.Font, FontStyle.Bold);
            }
            else
            {
                TabFont = new Font(e.Font, FontStyle.Regular);
            }
            Rectangle r = e.Bounds;
            r = new Rectangle(r.X, r.Y + 8, r.Width, r.Height - 3);

            string TabName = TaskBarRef.tabControl1.TabPages[e.Index].Text;
            StringFormat sf = new StringFormat();
            sf.Alignment = StringAlignment.Center;

            e.Graphics.FillRectangle(BackBrush, e.Bounds);
            e.Graphics.DrawString(TabName, TabFont, ForeBrush, r, sf);

            sf.Dispose();




            if (e.Index == TaskBarRef.tabControl1.SelectedIndex)
            {
                TabFont.Dispose();
                BackBrush.Dispose();
            }
            else
            {
                BackBrush.Dispose();
                ForeBrush.Dispose();
            }
    }
  • 0
    Наблюдение: вы используете TabFont и ForeBrush одновременно, но распоряжаетесь ими исключительно. Это не выглядит правильно на всех!
Теги:

1 ответ

1
Лучший ответ

Я бы посмотрел этот пример кода. Он показывает, как окрасить вкладки, а также весь выбранный элемент управления.

В вашем примере вы можете изменить BackBrush на Solid Solid и добавить это до строки sf.Dispose:

TaskBarRef.tabControl1.TabPages[e.Index].BackColor = BackBrush.Color;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню