2010-01-19 7 views
16

Ich habe einen ToolStripButton, der als Optionsfeld verwendet wird. Wenn es aktiviert ist, umgibt ein blauer Umriss die Schaltfläche, aber es gibt keine Hintergrundfarbe. Es ist nicht klar genug für den Benutzer, dass die Schaltfläche aktiviert ist, daher möchte ich die Hintergrundfarbe ändern, um den Prüfstatus besser sichtbar zu machen.Wie System.Windows.Forms.ToolStripButton Highlight/Hintergrundfarbe ändern, wenn aktiviert?

Wie gehe ich vor, um die Hervorhebungsfarbe zu ändern, wenn die Checked-Eigenschaft auf true gesetzt ist?

ist hier ein Code-Schnipsel:

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

Antwort

36

Sie können Ihre eigene Werkzeugleiste Renderer bieten die Schaltfläche Hintergrund so, wie Sie sie wollen ziehen. Dieser Beispielcode gibt der überprüften Schaltfläche einen sehr sichtbaren schwarzen Hintergrund:

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

sehr geschätzt! – mwalsher

Verwandte Themen