Permalink
Fetching contributors…
Cannot retrieve contributors at this time
96 lines (80 sloc) 4.47 KB
title ms.custom ms.date ms.prod ms.reviewer ms.suite ms.technology ms.tgt_pltfrm ms.topic dev_langs helpviewer_keywords ms.assetid caps.latest.revision author ms.author manager
How to: Create and Set a Custom Renderer for the ToolStrip Control in Windows Forms
03/30/2017
.net-framework
dotnet-winforms
article
jsharp
ToolStrip control [Windows Forms], custom rendering
toolbars [Windows Forms], rendering
examples [Windows Forms], toolbars
ToolStrip control [Windows Forms], rendering
88a804ba-679f-4ba3-938a-0dc396199c5b
16
dotnet-bot
dotnetcontent
wpickett

How to: Create and Set a Custom Renderer for the ToolStrip Control in Windows Forms

xref:System.Windows.Forms.ToolStrip controls give easy support to themes and styles. You can achieve completely custom appearance and behavior (look and feel) by setting either the xref:System.Windows.Forms.ToolStrip.Renderer%2A?displayProperty=nameWithType property or the xref:System.Windows.Forms.ToolStripManager.Renderer%2A?displayProperty=nameWithType property to a custom renderer.

You can assign renderers to each individual xref:System.Windows.Forms.ToolStrip, xref:System.Windows.Forms.MenuStrip, xref:System.Windows.Forms.ContextMenuStrip, or xref:System.Windows.Forms.StatusStrip control, or you can use the xref:System.Windows.Forms.ToolStripManager.Renderer%2A property to affect all objects by setting the xref:System.Windows.Forms.ToolStrip.RenderMode%2A?displayProperty=nameWithType property to xref:System.Windows.Forms.ToolStripRenderMode.ManagerRenderMode?displayProperty=nameWithType.

[!NOTE] xref:System.Windows.Forms.ToolStrip.RenderMode%2A returns xref:System.Windows.Forms.ToolStripRenderMode.Custom only if the value of xref:System.Windows.Forms.ToolStrip.Renderer%2A?displayProperty=nameWithType is not null.

To create a custom renderer

  1. Extend the xref:System.Windows.Forms.ToolStripRenderer class.

  2. Implement desired custom rendering by overriding appropriate On… members

    Public Class RedTextRenderer  
        Inherits System.Windows.Forms.ToolStripRenderer  
        Protected Overrides Sub OnRenderItemText(ByVal e As _  
            ToolStripItemTextRenderEventArgs)   
            e.TextColor = Color.Red  
            e.TextFont = New Font("Helvetica", 7, FontStyle.Bold)  
            MyBase.OnRenderItemText(e)  
        End Sub  
    End Class  
    public class RedTextRenderer : _  
        System.Windows.Forms.ToolStripRenderer  
    {  
        protected override void _  
            OnRenderItemText(ToolStripItemTextRenderEventArgs e)  
        {  
            e.TextColor = Color.Red;  
            e.TextFont = new Font("Helvetica", 7, FontStyle.Bold);  
           base.OnRenderItemText(e);  
        }  
    }  

To set the custom renderer to be the current renderer

  1. To set the custom renderer for one xref:System.Windows.Forms.ToolStrip, set the xref:System.Windows.Forms.ToolStrip.Renderer%2A?displayProperty=nameWithType property to the custom renderer.

    toolStrip1.Renderer = New RedTextRenderer()  
    toolStrip1.Renderer = new RedTextRenderer();  
  2. Or to set the custom renderer for all xref:System.Windows.Forms.ToolStrip classes contained in your application: Set the xref:System.Windows.Forms.ToolStripManager.Renderer%2A?displayProperty=nameWithType property to the custom renderer and set the xref:System.Windows.Forms.ToolStrip.RenderMode%2A property to xref:System.Windows.Forms.ToolStripRenderMode.ManagerRenderMode.

    toolStrip1.RenderMode = ToolStripRenderMode.ManagerRenderMode  
    ToolStripManager.Renderer = New RedTextRenderer()  
    toolStrip1.RenderMode = ToolStripRenderMode.ManagerRenderMode;  
    ToolStripManager.Renderer = new RedTextRenderer();  

See Also

xref:System.Windows.Forms.ToolStripManager.Renderer%2A
xref:System.Windows.Forms.ToolStripRenderer
xref:System.Windows.Forms.ToolStrip.RenderMode%2A
ToolStrip Control Overview
ToolStrip Control Architecture
ToolStrip Technology Summary