2010-01-19 4 views
16

J'ai un ToolStripButton qui est utilisé comme un bouton radio. Quand il est coché, un contour bleu entoure le bouton, mais il n'y a pas de couleur de fond. Il n'est pas assez clair pour l'utilisateur que le bouton est coché, donc je voudrais changer la couleur d'arrière-plan pour rendre l'état de vérification plus visible.Comment changer la couleur de surbrillance/arrière-plan de System.Windows.Forms.ToolStripButton lorsqu'elle est cochée?

Comment modifier la couleur de surbrillance lorsque la propriété Vérifié est définie sur true?

Voici un extrait de code:

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

Répondre

36

Vous pouvez fournir votre propre moteur de rendu bande d'outil pour dessiner l'arrière-plan du bouton de la façon dont vous les voulez. Cet exemple de code donne au bouton coché un arrière-plan noir très 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); 
     } 
    } 
} 
+0

très appréciée! – mwalsher

Questions connexes