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);
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.
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); } } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With