Procedura: Disegnare un controllo ToolStrip personalizzato
I controlli ToolStrip dispongono delle classi di rendering (di disegno) associate seguenti:
ToolStripSystemRenderer fornisce l'aspetto e lo stile del sistema operativo.
ToolStripProfessionalRenderer fornisce l'aspetto e lo stile di Microsoft Office.
ToolStripRenderer è la classe base astratta per le altre due classi di rendering.
Per personalizzare il disegno (noto anche come disegno proprietario) di un ToolStrip, è possibile eseguire l'override di una delle classi di rendering e modificare un aspetto della logica di rendering.
Le procedure seguenti descrivono vari aspetti del disegno personalizzato.
Passare tra i renderer forniti
Impostare la proprietà RenderMode sul valore ToolStripRenderMode desiderato.
Con ManagerRenderMode, il RenderMode statico determina il renderer per l'applicazione. Gli altri valori di ToolStripRenderMode sono Custom, Professionale System.
Modificare i bordi in stile Office
- Sostituire ToolStripProfessionalRenderer.OnRenderToolStripBorder, ma non chiamare la classe di base.
Nota
È disponibile una versione di questo metodo per ToolStripRenderer, ToolStripSystemRenderere ToolStripProfessionalRenderer.
Modificare ProfessionalColorTable
Eseguire l'override di ProfessionalColorTable e modificare i colori desiderati.
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
Modificare il rendering per tutti i ToolStrips
Utilizzare la proprietà ToolStripManager.RenderMode per scegliere uno dei renderer forniti.
Usare ToolStripManager.Renderer per assegnare un renderer personalizzato.
Assicurarsi che ToolStrip.RenderMode sia impostato sul valore predefinito di ManagerRenderMode.
Disattivare i colori di Office
- Impostare ToolStripManager.VisualStylesEnabled a
false
.
Disattiva i colori di Office per una barra degli strumenti
Usare codice simile all'esempio di codice seguente.
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)
Vedere anche
.NET Desktop feedback