在c#中更改menuitem附近箭头的颜色

Mar*_*ina 4 c# menuitem winforms

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

我在本文档中找到了解释:

MenuItem.OwnerDraw 属性

以及关于 stackoverflow 的类似问题:

关于stackoverflow的问题

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

and*_*ian 6

灵感来自@Hans Passant这个非常好的答案在此处输入图片说明 在表单加载或构造函数时为您的菜单条提供自定义渲染器,例如:

this.menuStrip.Renderer = new WhiteArrowRenderer();
Run Code Online (Sandbox Code Playgroud)

并覆盖箭头油漆:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)