1
我需要在我的应用程序中自定义ToolStripMenuItems。 打开子菜单的每个ToolStripMenuItem在文本附近都有一个黑色箭头。 我想改变一些颜色(MenuItemSelected,MenuItemBorder,MenuItemSelectedGradientBegin,...)和这个箭头的颜色。我已经创建了一个类MyColor解决的第一个问题在c中自定义ToolStripMenuItems#
public class MyColorTable : ProfessionalColorTable
{
public override Color MenuItemSelected
{
get { return Color.Silver; }
}
public override Color MenuItemBorder
{
get { return Color.WhiteSmoke; }
}
public override Color MenuItemSelectedGradientBegin
{
get { return Color.FromArgb(60, 60, 60); }
}
}
和另一个类以改变箭头
public class CustomToolStripRenderer : ToolStripProfessionalRenderer
{
private readonly ToolStripProfessionalRenderer _toolStripRenderer;
public CustomToolStripRenderer(ToolStripProfessionalRenderer toolStripRenderer)
{
_toolStripRenderer = toolStripRenderer;
}
protected override void OnRenderArrow(ToolStripArrowRenderEventArgs e)
{
var tsMenuItem = e.Item as ToolStripMenuItem;
if (tsMenuItem != null)
e.ArrowColor = Color.White;
base.OnRenderArrow(e);
}
public void Render()
{
_toolStripRenderer.RoundedEdges = false;
ToolStripManager.Renderer = this;
//ToolStripManager.Renderer = _toolStripRenderer;
}
}
当我调用渲染()方法
CustomToolStripRenderer customRenderer = new CustomToolStripRenderer(new ToolStripProfessionalRenderer(new MyColorTable()));
customRenderer.Render();
的颜色
我知道箭头变白了,但是因为这条线我失去了第一个变化
ToolStripManager.Renderer = this;
我无法找到一个简单的解决方案来解决这个问题,因为静态类ToolStripManager