Jak niestandardowo narysować kontrolkę ToolStrip
Kontrolki ToolStrip mają następujące skojarzone klasy renderowania (malowanie):
ToolStripSystemRenderer zapewnia wygląd i styl systemu operacyjnego.
ToolStripProfessionalRenderer zapewnia wygląd i styl pakietu Microsoft Office.
ToolStripRenderer jest abstrakcyjną klasą bazową dla pozostałych dwóch klas renderowania.
Aby narysować niestandardowo (nazywane również rysowaniem własnym) ToolStrip, można zastąpić jedną z klas rendererów i zmienić wybrany element logiki renderowania.
Poniższe procedury opisują różne aspekty rysunku niestandardowego.
Przełączanie między udostępnionymi modułami renderujących
Ustaw właściwość RenderMode na odpowiednią wartość ToolStripRenderMode.
W przypadku ManagerRenderModestatyczny RenderMode określa moduł renderowania dla aplikacji. Pozostałe wartości ToolStripRenderMode to Custom, Professionali System.
Zmienianie obramowań w stylu pakietu Office
- Zastąp ToolStripProfessionalRenderer.OnRenderToolStripBorder, ale nie wywołuj klasy bazowej.
Notatka
Istnieje wersja tej metody dla ToolStripRenderer, ToolStripSystemRendereri ToolStripProfessionalRenderer.
Zmienianie tabeli ProfessionalColorTable
Zastąpij ProfessionalColorTable i zmień żądane kolory.
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
Zmiana renderowania dla wszystkich elementów ToolStrips
Użyj właściwości ToolStripManager.RenderMode, aby wybrać jeden z dostarczonych modułów renderujących.
Użyj ToolStripManager.Renderer, aby przypisać niestandardowy moduł renderowania.
Upewnij się, że ToolStrip.RenderMode jest ustawiona na wartość domyślną ManagerRenderMode.
Wyłączanie kolorów pakietu Office
- Ustaw ToolStripManager.VisualStylesEnabled na wartość
false
.
Wyłącz kolory pakietu Office dla jednego paska narzędziowego
Użyj kodu podobnego do poniższego przykładu kodu.
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)
Zobacz też
.NET Desktop feedback