ToolStripDropDownButton

ToolStripDropDownButton

我使用ToolStripDropDownButton,前景色为白色,背景色为透明。当鼠标在控件上方时,“ ToolStripDropDownButton”的文本不可读,因为可见“蓝色焦点”。

当鼠标在控件上方时,如何消除/去除ToolStripDropDownButton上的“蓝色焦点”?如下图所示。谢谢。


产生类似digEmAll图片的输出。

using System;
using System.Windows.Forms;
using System.Drawing;

namespace WindowsFormsApplication1
{
   public partial class Form1 : Form
   {
       public Form1()
       {
           InitializeComponent();

           toolStrip1.BackColor = Color.Transparent;
           toolStrip1.GripStyle = ToolStripGripStyle.Visible;
           toolStrip1.Renderer = new MyRenderer();
       }

       private class MyRenderer : ToolStripSystemRenderer
       {
          protected override void OnRenderArrow(ToolStripArrowRenderEventArgs e)
          {
              e.ArrowColor = Color.White;
              base.OnRenderArrow(e);
          }

          protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
          {
             // remove white line bellow button (http://connect.microsoft.com/VisualStudio/feedback/details/92862/toolstrip-always-draws-a-border-on-the-bottom-with-rendermode-system-and-docked-left-or-right)
             //base.OnRenderToolStripBorder(e);
          }
       }
    }
}

最佳答案

您可以更改ToolStrip的Renderer属性。例如,使用ToolStripSystemRenderer代替默认的ToolStripProfessionalRenderer

this.toolStrip.Renderer = new ToolStripSystemRenderer();


您将得到以下结果:



如果要更自定义它,可以扩展ToolStripSystemRenderer。例如,使用以下代码,您可以更改箭头的颜色:

class MyRenderer : ToolStripSystemRenderer
{
    protected override void OnRenderArrow(ToolStripArrowRenderEventArgs e)
    {
        e.ArrowColor = Color.White;
        base.OnRenderArrow(e);
    }
}


结果:

关于c# - 当鼠标在控件上方时,如何消除对ToolStripDropDownButton的蓝色关注,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10053867/

10-11 04:14