How to change System.Windows.Forms.ToolStripButton highlight/background color when checked?

前端 未结 3 890
执念已碎
执念已碎 2020-12-09 16:56

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 fo

相关标签:
3条回答
  • 2020-12-09 17:02

    on Event click for every 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;
    
            }
    
    0 讨论(0)
  • 2020-12-09 17:08

    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);
            }
        }
    }
    
    0 讨论(0)
  • 2020-12-09 17:19

    Here is the VB.net code

    Public Class Form1
    
       Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
          toolStrip1.Renderer = New MyRenderer()
       End Sub
    
       Public Class MyRenderer
          Inherits ToolStripProfessionalRenderer
    
          Protected Overrides Sub OnRenderButtonBackground(ByVal e As ToolStripItemRenderEventArgs)
              Dim btn As ToolStripButton = e.Item
              If (Not IsDBNull(btn) And btn.CheckOnClick And btn.Checked) Then
                  Dim bounds As Rectangle = New Rectangle(Point.Empty, e.Item.Size)
                  e.Graphics.FillRectangle(Brushes.Black, bounds)
              End If
          End Sub
    End Class
    
    0 讨论(0)
提交回复
热议问题