c# .net c#-2.0 toolstripbutton

c# - ¿Cómo cambiar el color de fondo/resaltado de System.Windows.Forms.ToolStripButton cuando está marcado?



.net c#-2.0 (2)

Puede proporcionar su propio procesador de tiras de herramientas para dibujar el fondo del botón de la forma que desee. Este código de ejemplo le da al botón marcado un fondo negro muy visible:

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); } } }

Tengo un ToolStripButton que se usa como un botón de radio. Cuando está marcado, un contorno azul rodea al botón, pero no hay color de fondo. No queda suficientemente claro para el usuario que el botón esté marcado, por lo que me gustaría cambiar el color de fondo para que el estado del cheque sea más visible.

¿Cómo hago para cambiar el color de resaltado cuando la propiedad Comprobada se establece en verdadero?

Aquí hay un fragmento de código:

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);


en el evento haga clic para cada toolStripButton

private void toolStripButton4_Click(object sender, EventArgs e) { toolStrip1.Items[0].BackColor = SystemColors.ActiveCaption; toolStrip1.Items[1].BackColor = SystemColors.Control; toolStrip1.Items[2].BackColor = SystemColors.Control; toolStrip1.Items[3].BackColor = SystemColors.Control; }