【问题标题】:Change the color of the arrow near the menuitem in c#在c#中更改菜单项附近箭头的颜色
【发布时间】:2014-10-28 19:01:56
【问题描述】:

我有一个包含很多菜单项的应用程序。我已将菜单项的背景更改为深灰色,将文本更改为白色,但文本附近的箭头仍然是黑色。我想把这个箭头的颜色改成白色。

我在这个文档中找到了解释:

MenuItem.OwnerDraw Property

还有一个关于stackoverflow的类似问题:

Question on stackoverflow

是否可以更简单地更改菜单项旁边的箭头颜色? (这是允许您显示子菜单的箭头)。我的意思是使用诸如 ProfessionalColorTable 之类的东西。

【问题讨论】:

  • 不用你自己画菜单

标签: c# winforms menuitem


【解决方案1】:

灵感来自very good answer@Hans Passant。 在表单加载或构造函数时为您的菜单条提供自定义渲染器,例如:

this.menuStrip.Renderer = new WhiteArrowRenderer();

并覆盖箭头绘制:

public class WhiteArrowRenderer : ToolStripProfessionalRenderer { 
    protected override void OnRenderArrow (ToolStripArrowRenderEventArgs e) { 
        var tsMenuItem = e.Item as ToolStripMenuItem;
        if (tsMenuItem != null)
            e.ArrowColor = Color.White;
        base.OnRenderArrow(e);
    }
}

【讨论】:

  • 这真的很有用。我试过了,它有效。不幸的是,这个解决方案删除了​​我所做的另一个更改。我用这段代码重写了一些方法来改变一些颜色: ToolStripProfessionalRenderer toolStripProfessionalRenderer = new ToolStripProfessionalRenderer(new MyColorTable()); ToolStripManager.Renderer = toolStripProfessionalRenderer;使用新代码,我失去了旧的更改。我该如何解决这个问题?非常感谢
  • 将现有的颜色表合并到也可以处理箭头的自定义渲染器中。
  • 什么意思?我试过这样做: CustomToolStripRenderer customRenderer = new ustomToolStripRenderer(new ToolStripProfessionalRenderer(new MyColorTable())); customRenderer.Render();公共无效渲染(){ ToolStripManager.Renderer = _toolStripRenderer; } protected override void OnRenderArrow(ToolStripArrowRenderEventArgs e){var tsMenuItem = e.Item as ToolStripMenuItem; if (tsMenuItem != null) e.ArrowColor = Color.White; base.OnRenderArrow(e);} 并且以这种方式箭头保持黑色,因为使用 ToolStripManager.Renderer = _toolStripRenderer 我覆盖了渲染器。
  • 用自定义的WhiteArrowRenderer完全替换现有的ToolStripProfessionalRenderer。使用同样自定义颜色表的构造函数。合并是指合并,二合一。无意冒犯,这是一个完全不同的问题。就我而言,您的应用程序中的其他冲突破坏了这个问题的目的。
  • 是的,你是对的。最初的问题是正确的,但在解决了最初的问题后,我注意到了另一个问题。我应该发布一个新问题,因为这个问题与原来的问题不同。不幸的是,自从您向我建议的最后一次更改以来,我现在就这样做了。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多