本文介绍了将ToolBar转换为ToolStrip控件和MouseHover不工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个大的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);
}
}


解决方案

谢谢到@LarsTech的帮助。我发现这工作。










  this.Toolstip1.RenderMode = ToolStripRenderMode.Professional; 

CustomRenderer

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


I have a large winform application which we working to modify the appearance. I am replacing System.Windows.Forms.Toolbar to System.Windows.Forms.ToolStrip control. I use a custom renderer to change dropdown arrow color. with default renderer i get mouse hover effects in toolstrip but with my custom rendering it dont seem to work. Here's my code.

Tool strip initialization:I removed unnecessary code for reading comfort

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

Toolstrip dropdown button:

 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);
    }
 }
解决方案

thanks to @LarsTech for his help. I found this working. I made this below modification in renderer and in code.

Added this line in initialization

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

这篇关于将ToolBar转换为ToolStrip控件和MouseHover不工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-28 19:05