如何自定义工具条按钮突出显示鼠标上的颜色

时间:2015-03-20 13:55:42

标签: c# winforms customization toolstripbutton

我在C#winform应用程序中使用ToolStrip 当我将鼠标移到按钮上时,它会突出显示(透明蓝色),我想更改此颜色

我尝试使用自定义渲染器类

 toolStrip1.Renderer = new MyRenderer();
 ....
 class MyRenderer : ToolStripProfessionalRenderer
 {
 }

但是,我不知道应该改写哪种方法来改变这种颜色。

3 个答案:

答案 0 :(得分:11)

实际上,没有内置方式(或者至少我不知道它)。

class MyRenderer : ToolStripProfessionalRenderer
{
    protected override void OnRenderButtonBackground(ToolStripItemRenderEventArgs e)
    {
        if (!e.Item.Selected)
        {
            base.OnRenderButtonBackground(e);
        }
        else
        {
            Rectangle rectangle = new Rectangle(0, 0, e.Item.Size.Width - 1, e.Item.Size.Height - 1);
            e.Graphics.FillRectangle(Brushes.Green, rectangle);
            e.Graphics.DrawRectangle(Pens.Olive, rectangle);
        }
    }
}

答案 1 :(得分:2)

您也可以通过制作ProfessionalColorTable的自定义实现并将其传递给ToolStripProfessionalRenderer's constructor来实现此目的。然后,您可以覆盖颜色表中的一些属性。

控制' hover'效果是'选择'在他们的名字中,例如' ButtonSelectedGradientBegin'。

您可以通过覆盖它们并返回粗体,明显的颜色来发现各种属性的效果,这样您就可以轻松查看它们的使用位置。

答案 2 :(得分:1)

快速而肮脏

使用标签代替按钮。您可以设置工具条标签的图像,背景图像和文本。然后,设置点击事件。

    工具条项目的
  • MouseEnter 事件:

    private void tsi_MouseEnter(object sender, EventArgs e)
    {
        // Cast to allow reuse of method.
        ToolStripItem tsi = (ToolStripItem)sender;
    
        // Create semi-transparent picture.
        Bitmap bm = new Bitmap(tsi.Width, tsi.Height);
        for (int y = 0; y < tsi.Height; y++)
        {
            for (int x = 0; x < tsi.Width; x++)
                bm.SetPixel(x, y, Color.FromArgb(150, Color.White));
        }
    
        // Set background.
        tsi.BackgroundImage = bm;
    }
    
  • MouseLeave 事件:

    private void tsi_MouseLeave(object sender, EventArgs e)
    {
        (sender as ToolStripItem).BackgroundImage = null;
    }