アプリケーションで ToolStripMenuItems をカスタマイズする必要があります。サブメニューを開く各 ToolStripMenuItem には、テキストの近くに黒い矢印があります。いくつかの色 (MenuItemSelected、MenuItemBorder、MenuItemSelectedGradientBegin など) とこの矢印の色も変更したいと考えています。最初の問題を解決するクラス MyColor を作成しました
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;
}
}
Render() メソッドを呼び出すと
CustomToolStripRenderer customRenderer = new CustomToolStripRenderer(new ToolStripProfessionalRenderer(new MyColorTable()));
customRenderer.Render();
矢印が白くなることがわかりますが、この行のために最初の変更が失われます
ToolStripManager.Renderer = this;
静的クラス ToolStripManager が原因で、この問題を解決する簡単な解決策を見つけることができません