2010-01-19 17 views
16

Ho un ToolStripButton che viene utilizzato come pulsante di opzione. Quando è selezionato, un contorno blu circonda il pulsante, ma non c'è colore di sfondo. Non è abbastanza chiaro per l'utente che il pulsante sia selezionato, quindi vorrei cambiare il colore di sfondo per rendere più visibile lo stato del controllo.Come modificare il colore di evidenziazione/colore di System.Windows.Forms.ToolStripButton quando selezionato?

Come posso modificare il colore di evidenziazione quando la proprietà selezionata è impostata su true?

Ecco un frammento di codice:

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

risposta

36

È possibile fornire il proprio renderer striscia degli strumenti per disegnare lo sfondo del tasto il modo desiderato. Questo codice di esempio fornisce al pulsante selezionato uno sfondo nero molto visibile:

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

molto apprezzato! – mwalsher

Problemi correlati