Procedimiento para dibujar un control ToolStrip de manera personalizada
Los controles ToolStrip tienen las siguientes clases de representación (dibujo) asociadas:
ToolStripSystemRenderer proporciona la apariencia y el estilo del sistema operativo.
ToolStripProfessionalRenderer proporciona la apariencia y el estilo de Microsoft Office.
ToolStripRenderer es la clase base abstracta para las otras dos clases de representación.
Para dibujar de forma personalizada un ToolStrip (lo que también se conoce como dibujado por el propietario), puede invalidar una de las clases del representador y cambiar algún aspecto de la lógica de representación.
Los procedimientos siguientes describen distintos aspectos del dibujo personalizado.
Cambio entre los representadores proporcionados
Establezca la propiedad RenderMode en el valor ToolStripRenderMode que desee.
Con ManagerRenderMode, el RenderMode estático determina el representador de su aplicación. Los demás valores de ToolStripRenderMode son Custom, Professional y System.
Cambio de los bordes de estilo Office
- Invalide ToolStripProfessionalRenderer.OnRenderToolStripBorder, pero no llame a la clase base.
Nota:
Hay una versión de este método para ToolStripRenderer, ToolStripSystemRenderer y ToolStripProfessionalRenderer.
Cambio de la clase ProfessionalColorTable
Invalide ProfessionalColorTable y cambie los colores que desee.
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
Cambio de la representación de todos los ToolStrips
Use la propiedad ToolStripManager.RenderMode para elegir uno de los representadores proporcionados.
Use ToolStripManager.Renderer para asignar un representador personalizado.
Asegúrese de que ToolStrip.RenderMode está establecido en el valor predeterminado de ManagerRenderMode.
Desactivación de los colores de Office
- Establezca ToolStripManager.VisualStylesEnabled en
false
.
Desactivación de los colores de Office para un ToolStrip
Use código similar al ejemplo de código siguiente.
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)
Consulte también
.NET Desktop feedback