将ToolBar转换为ToolStrip控件并且MouseHover无法正常工作

时间:2014-08-08 12:31:24

标签: c#-4.0 toolbar toolstrip toolstripdropdown

我有一个大型winform应用程序,我们正在努力修改外观。我正在将System.Windows.Forms.Toolbar替换为System.Windows.Forms.ToolStrip控件。我使用自定义渲染器来更改下拉箭头颜色。使用默认渲染器我在工具条中获得鼠标悬停效果但是使用我的自定义渲染它似乎不起作用。这是我的代码。

工具条初始化:我删除了不必要的代码以便于阅读

this.toolStrip1 = new System.Windows.Forms.ToolStrip();
this.imageList1 = new System.Windows.Forms.ImageList(this.components);
this.toolStripDropDownButton1 = new System.Windows.Forms.ToolStripDropDownButton();

this.toolStrip1.ImageList = this.imageList1;
this.toolStrip1.ImageScalingSize = new System.Drawing.Size(55, 32);
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripDropDownButton1
});
this.toolStrip1.Renderer = new  MyRenderer();

工具条下拉按钮

 this.toolStripDropDownButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
 this.toolStripDropDownButton1.ImageIndex = 0;
 this.toolStripDropDownButton1.Name = "toolStripDropDownButton1";

CustomRenderer

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

1 个答案:

答案 0 :(得分:0)

感谢@LarsTech的帮助。我发现这个工作。我在渲染器和代码中进行了以下修改。

在初始化中添加了这一行

this.Toolstip1.RenderMode = ToolStripRenderMode.Professional;

<强> CustomRenderer

public class MyRenderer : ToolStripProfessionalRenderer //Professional renderer
{
   protected override void OnRenderArrow(ToolStripArrowRenderEventArgs e)
   {
    e.ArrowColor = Color.White;
    base.OnRenderArrow(e);
   }
 }