1
내 응용 프로그램에서 ToolStripMenuItems를 사용자 지정해야합니다. 하위 메뉴를 여는 각 ToolStripMenuItem에는 텍스트 근처에 검은 색 화살표가 있습니다. 일부 색 (MenuItemSelected, MenuItemBorder, MenuItemSelectedGradientBegin, ...)과이 화살표의 색을 변경하려고합니다. I는 화살표 C에서 ToolStripMenuItems 사용자 지정
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;
}
}
I가 렌더링() 메소드
CustomToolStripRenderer customRenderer = new CustomToolStripRenderer(new ToolStripProfessionalRenderer(new MyColorTable()));
customRenderer.Render();
에게 전화
의 색상을 변경하는 제 문제
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); }
}
}
다른 클래스를 해결하기 위해, 클래스 MyColor을 만든
나는 화살이 희게되다. 그러나 나는이 선 때문에 첫번째 변화를 잃는다.
ToolStripManager.Renderer = this;
나는 당신은 확실히 그 _toolStripRenderer 변수를 제거하는 데 필요한 코드의 의미를하기 때문에 정적 클래스 ToolStripManager