Como personalizar o desenho de um controle ToolStrip
Os controles ToolStrip têm as seguintes classes de renderização (pintura) associadas:
ToolStripSystemRenderer fornece a aparência e o estilo do seu sistema operacional.
ToolStripProfessionalRenderer fornece a aparência e o estilo do Microsoft Office.
ToolStripRenderer é a classe base abstrata para as outras duas classes de renderização.
Para desenhar um ToolStrippersonalizado (também conhecido como desenho do proprietário), você pode substituir uma das classes do renderizador e alterar um aspeto da lógica de renderização.
Os procedimentos a seguir descrevem vários aspetos do desenho personalizado.
Alternar entre os renderizadores fornecidos
Defina a propriedade RenderMode para o valor ToolStripRenderMode desejado.
Com ManagerRenderMode, o RenderMode estático determina o renderizador para seu aplicativo. Os outros valores de ToolStripRenderMode são Custom, Professionale System.
Alterar as bordas no estilo do Office
- Substitua ToolStripProfessionalRenderer.OnRenderToolStripBorder, mas não chame a classe base.
Observação
Existe uma versão deste método para ToolStripRenderer, ToolStripSystemRenderere ToolStripProfessionalRenderer.
Alterar o ProfessionalColorTable
Substitua ProfessionalColorTable e altere as cores desejadas.
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
Alterar a renderização de todas as ToolStrips
Use a propriedade ToolStripManager.RenderMode para escolher um dos renderizadores fornecidos.
Use ToolStripManager.Renderer para atribuir um renderizador personalizado.
Verifique se ToolStrip.RenderMode está definido como o valor padrão de ManagerRenderMode.
Desliga as cores do Office
- Defina ToolStripManager.VisualStylesEnabled para
false
.
Desativar as cores do Office para uma barra de ferramentas
Use um código semelhante ao exemplo de código a seguir.
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)
Ver também
.NET Desktop feedback