Поделиться через


Практическое руководство. Пользовательская прорисовка элемента управления ToolStrip

Элементы управления ToolStrip имеют следующие связанные классы отрисовки:

  • ToolStripSystemRenderer предоставляет внешний вид и стиль операционной системы;

  • ToolStripProfessionalRenderer предоставляет внешний вид и стиль Microsoft Office;

  • ToolStripRenderer является абстрактным базовым классом для двух других классов отрисовки.

Для настраиваемой отрисовки (также известной как рисование владельцем) элемента управления ToolStrip можно переопределить один из классов отрисовки и изменить перспективу логики отрисовки.

В приведенных ниже процедурах описаны различные аспекты настраиваемой отрисовки.

Переключение между доступными средствами отрисовки

Изменение границ в стиле Office

Примечание.

Существуют версии этого метода для ToolStripRenderer, ToolStripSystemRenderer и ToolStripProfessionalRenderer.

Изменение ProfessionalColorTable

  • Переопределите ProfessionalColorTable и измените нужные цвета.

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
    
        private void Form1_Load(object sender, EventArgs e)
        {
            var colorTable = new MyColorTable();
            toolStrip1.Renderer = new ToolStripProfessionalRenderer(colorTable);
        }
    
        class MyColorTable: ProfessionalColorTable
        {
            public override System.Drawing.Color ButtonPressedGradientBegin => Color.Red;
            public override System.Drawing.Color ButtonPressedGradientMiddle => Color.Blue;
            public override System.Drawing.Color ButtonPressedGradientEnd => Color.Green;
            public override System.Drawing.Color ButtonSelectedGradientBegin => Color.Yellow;
            public override System.Drawing.Color ButtonSelectedGradientMiddle => Color.Orange;
            public override System.Drawing.Color ButtonSelectedGradientEnd => Color.Violet;
        }
    }
    
    Public Class Form1
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Dim colorTable As New MyColorTable
            ToolStrip1.Renderer = New ToolStripProfessionalRenderer(colorTable)
        End Sub
    
        Class MyColorTable
            Inherits ProfessionalColorTable
    
            Public Overrides ReadOnly Property ButtonPressedGradientBegin() As System.Drawing.Color
                Get
                    Return Color.Red
                End Get
            End Property
    
            Public Overrides ReadOnly Property ButtonPressedGradientMiddle() As System.Drawing.Color
                Get
                    Return Color.Blue
                End Get
            End Property
    
            Public Overrides ReadOnly Property ButtonPressedGradientEnd() As System.Drawing.Color
                Get
                    Return Color.Green
                End Get
            End Property
    
            Public Overrides ReadOnly Property ButtonSelectedGradientBegin() As System.Drawing.Color
                Get
                    Return Color.Yellow
                End Get
            End Property
    
            Public Overrides ReadOnly Property ButtonSelectedGradientMiddle() As System.Drawing.Color
                Get
                    Return Color.Orange
                End Get
            End Property
    
            Public Overrides ReadOnly Property ButtonSelectedGradientEnd() As System.Drawing.Color
                Get
                    Return Color.Violet
                End Get
            End Property
        End Class
    End Class
    

Изменение отрисовки для всех ToolStrip

  1. С помощью свойства ToolStripManager.RenderMode выберите одно из доступных средств отрисовки.

  2. Используйте ToolStripManager.Renderer для назначения пользовательского средства отрисовки.

  3. Убедитесь в том, что свойству ToolStrip.RenderMode присвоено значение по умолчанию ManagerRenderMode.

Отключение цветов Office

Отключение цветов в стиле Office для одного ToolStrip

  • Используйте код, аналогичный приведенному ниже.

    ProfessionalColorTable colorTable = new ProfessionalColorTable();
    colorTable.UseSystemColors = true;
    toolStrip1.Renderer = new ToolStripProfessionalRenderer(colorTable);
    
    Dim colorTable As New ProfessionalColorTable
    colorTable.UseSystemColors = True
    ToolStrip1.Renderer = new ToolStripProfessionalRenderer(colorTable)
    

См. также