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