Procedura: eseguire un disegno personalizzato di un controllo ToolStrip
Ai controlli ToolStrip sono associate le classi di rendering (disegno) seguenti:
ToolStripSystemRenderer fornisce l'aspetto e lo stile del sistema operativo.
ToolStripProfessionalRenderer fornisce l'aspetto e lo stile di Microsoft Office.
ToolStripRenderer è la classe di base astratta per le altre due classi di rendering.
Per disegnare un controllo ToolStrip personalizzato (modalità nota anche come "Owner Draw"), è possibile eseguire l'override di una delle classi renderer 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 la proprietà statica RenderMode determina il renderer per l'applicazione. Gli altri valori di ToolStripRenderMode sono Custom, Professional e System.
Modificare i bordi in stile Office
- Eseguire l'override di ToolStripProfessionalRenderer.OnRenderToolStripBorder, ma senza chiamare la classe di base.
Nota
Esiste una versione di questo metodo per ToolStripRenderer, ToolStripSystemRenderer e ToolStripProfessionalRenderer.
Modificare ProfessionalColorTable
Eseguire l'override di ProfessionalColorTable e cambiare 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 gli strumentiStrips
Usare la proprietà ToolStripManager.RenderMode per scegliere uno dei renderer forniti.
Usare ToolStripManager.Renderer per assegnare un renderer personalizzato.
Accertarsi che ToolStrip.RenderMode sia impostata sul valore predefinito di ManagerRenderMode.
Disattivare i colori di Office
- Impostare ToolStripManager.VisualStylesEnabled su
false
.
Disattivare i colori di Office per uno ToolStrip
Usare codice simile all'esempio 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)
Vedi anche
.NET Desktop feedback