Изменяются кастомные контролы

У меня есть такой кастомный TabControl и он после компиляции изменяется, мне нужна реализация как сохранить изначальный вид такого контрола на форме (в студии VS) чтобы он не изменялся, после запуска работает как в изначальном виде, только в самой студии меняется цвет и форма окантовки пропадает!

CustomTabControl.cs

Вот его код:

using System.Drawing;
using System.Windows.Forms;

namespace AutoView
{
    public class CustomTabControl : TabControl
    {
        private Color _tabColor = Color.FromArgb(50, 50, 50); // Цвет вкладки
        private Color _selectedTabColor = Color.FromArgb(0, 120, 215); // Цвет выбранной вкладки
        private Color _textColor = Color.White; // Цвет текста вкладок
        private int _borderThickness = 2; // Толщина границы вкладок
        private int _tabHeight = 40; // Высота вкладок

        // Конструктор класса
        public CustomTabControl()
        {
            // Установить стили для управления рисованием
            SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.OptimizedDoubleBuffer, true);
            ItemSize = new Size(120, _tabHeight); // Задать размеры вкладок
            SizeMode = TabSizeMode.Fixed; // Установить фиксированный режим размеров
        }

        // Свойство для высоты вкладок
        public int TabHeight
        {
            get => _tabHeight;
            set
            {
                // Проверка изменения значения
                if (_tabHeight != value)
                {
                    _tabHeight = value;
                    ItemSize = new Size(ItemSize.Width, _tabHeight); // Обновить размер
                    Invalidate(); // Перерисовать
                }
            }
        }

        // Свойство для управления толщиной границы вкладок
        public int BorderThickness
        {
            get => _borderThickness;
            set
            {
                // Проверка изменения значения
                if (_borderThickness != value)
                {
                    _borderThickness = value;
                    Invalidate(); // Перерисовать
                }
            }
        }

        // Свойство для цвета вкладки
        public Color TabColor
        {
            get => _tabColor;
            set
            {
                // Проверка изменения значения
                if (_tabColor != value)
                {
                    _tabColor = value;
                    Invalidate(); // Перерисовать
                }
            }
        }

        // Свойство для цвета выбранной вкладки
        public Color SelectedTabColor
        {
            get => _selectedTabColor;
            set
            {
                // Проверка изменения значения
                if (_selectedTabColor != value)
                {
                    _selectedTabColor = value;
                    Invalidate(); // Перерисовать
                }
            }
        }

        // Свойство для цвета текста вкладки
        public Color TextColor
        {
            get => _textColor;
            set
            {
                // Проверка изменения значения
                if (_textColor != value)
                {
                    _textColor = value;
                    Invalidate(); // Перерисовать
                }
            }
        }

        // Метод для отрисовки вкладок
        protected override void OnPaint(PaintEventArgs e)
        {
            e.Graphics.Clear(Color.FromArgb(30, 30, 30)); // Установить фоновый цвет

            for (int i = 0; i < TabCount; i++)
            {
                // Получить прямоугольник вкладки
                Rectangle tabRect = GetTabRect(i);
                tabRect.Inflate(-_borderThickness, -_borderThickness); // Уменьшить размер вкладки на толщину границы

                // Выбор цвета для вкладки
                Color tabColor = (i == SelectedIndex) ? _selectedTabColor : _tabColor;

                // Использование using для автоматического освобождения ресурсов
                using (SolidBrush brush = new(tabColor))
                {
                    e.Graphics.FillRectangle(brush, tabRect); // Заполнить вкладку цветом
                }

                // Отрисовать текст вкладки по центру
                TextRenderer.DrawText(e.Graphics, TabPages[i].Text, Font, tabRect, _textColor, TextFormatFlags.HorizontalCenter | TextFormatFlags.VerticalCenter);
            }

            base.OnPaint(e); // Вызов базового метода отрисовки
        }
    }
}

И вот что получается в итоге:

введите сюда описание изображения


Ответы (0 шт):