Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to change System.Windows.Forms.ToolStripButton highlight/background color when checked?

Tags:

I have a ToolStripButton that is used as a radio button. When it is checked, a blue outline surrounds the button, but there is no background color. It is not clear enough for the user that the button is checked, so I would like to change the background color to make the check state more visible.

How do I go about changing the highlight color when the Checked property is set to true?

Here is a code snippet:

this.hideInactiveVehiclesToolstripButton.CheckOnClick = true; this.hideInactiveVehiclesToolstripButton.ForeColor = System.Drawing.Color.Blue; this.hideInactiveVehiclesToolstripButton.AutoSize = false; this.hideInactiveVehiclesToolstripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; this.hideInactiveVehiclesToolstripButton.Image = global::ClientUI.Properties.Resources.toggleInactive; this.hideInactiveVehiclesToolstripButton.ImageTransparentColor = System.Drawing.Color.Black; this.hideInactiveVehiclesToolstripButton.Name = "hideInactiveVehiclesToolstripButton"; this.hideInactiveVehiclesToolstripButton.Size = new System.Drawing.Size(48, 48); this.hideInactiveVehiclesToolstripButton.Text = "Hide Inactive Vehicles"; this.hideInactiveVehiclesToolstripButton.Click +=new System.EventHandler(this.hideInactiveVehiclesToolstripButton_Click); 
like image 852
mwalsher Avatar asked Jan 19 '10 21:01

mwalsher


People also ask

How do I change the background color in Windows form?

Set the background in the Windows Forms DesignerOpen the project in Visual Studio and select the Panel control. In the Properties window, click the arrow button next to the BackColor property to display a window with three tabs. Select the Custom tab to display a palette of colors.


1 Answers

You can provide your own tool strip renderer to draw the button's background the way you want them. This example code gives the checked button a very visible black background:

public partial class Form1 : Form {     public Form1() {         InitializeComponent();         toolStrip1.Renderer = new MyRenderer();     }     private class MyRenderer : ToolStripProfessionalRenderer {         protected override void OnRenderButtonBackground(ToolStripItemRenderEventArgs e) {             var btn = e.Item as ToolStripButton;             if (btn != null && btn.CheckOnClick && btn.Checked) {                 Rectangle bounds = new Rectangle(Point.Empty, e.Item.Size);                 e.Graphics.FillRectangle(Brushes.Black, bounds);             }             else base.OnRenderButtonBackground(e);         }     } } 
like image 182
Hans Passant Avatar answered Sep 28 '22 08:09

Hans Passant