Postupy: Vlastní kreslení ovládacího prvku ToolStrip
Ovládací prvky ToolStrip mají následující třídy vykreslování (malování):
ToolStripSystemRenderer poskytuje vzhled a styl operačního systému.
ToolStripProfessionalRenderer poskytuje vzhled a styl microsoft Office.
ToolStripRenderer je abstraktní základní třída pro ostatní dvě třídy vykreslování.
Pokud chcete vlastní kreslení (také známé jako owner draw) ToolStrip, můžete přepsat jednu ze tříd rendereru a změnit některý aspekt vykreslovací logiky.
Následující postupy popisují různé aspekty vlastního výkresu.
Přepínání mezi poskytnutými renderery
Nastavte vlastnost RenderMode na požadovanou hodnotu ToolStripRenderMode.
U ManagerRenderModeurčuje statický RenderMode vykreslovací modul pro vaši aplikaci. Další hodnoty ToolStripRenderMode jsou Custom, Professionala System.
Změna ohraničení stylu Office
- Přepište ToolStripProfessionalRenderer.OnRenderToolStripBorder, ale nevolejte základní třídu.
Poznámka
Existuje verze této metody pro ToolStripRenderer, ToolStripSystemRenderera ToolStripProfessionalRenderer.
Změna tabulky ProfessionalColorTable
Přepište ProfessionalColorTable a změňte požadované barvy.
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
Změna vykreslování pro všechny toolStrips
Pomocí vlastnosti ToolStripManager.RenderMode zvolte jeden z poskytnutých rendererů.
K přiřazení vlastního rendereru použijte ToolStripManager.Renderer.
Ujistěte se, že je ToolStrip.RenderMode nastavená na výchozí hodnotu ManagerRenderMode.
Vypnutí barev Office
- Nastavte ToolStripManager.VisualStylesEnabled na
false
.
Vypnout barvy Office pro jeden panel nástrojů
Použijte kód podobný následujícímu příkladu kódu.
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)
Viz také
.NET Desktop feedback