C# 我是否可以覆盖ToolStripSystemRenderer以更改下拉背景的颜色,而不更改ToolStripBackground颜色?
我创建了一个继承ToolStripSystemRenderer的类,并添加了重写的各种事件,以按照我想要的方式设置toolstrip的样式。但是,如果不更改toolstrip本身的背景色,我似乎无法更改按钮下拉菜单的背景 这是菜单的一个例子。我想改变系统的颜色 目前,我的渲染器类非常简单C# 我是否可以覆盖ToolStripSystemRenderer以更改下拉背景的颜色,而不更改ToolStripBackground颜色?,c#,winforms,C#,Winforms,我创建了一个继承ToolStripSystemRenderer的类,并添加了重写的各种事件,以按照我想要的方式设置toolstrip的样式。但是,如果不更改toolstrip本身的背景色,我似乎无法更改按钮下拉菜单的背景 这是菜单的一个例子。我想改变系统的颜色 目前,我的渲染器类非常简单 public class AvertToolStripRenderer : ToolStripSystemRenderer { protected override void OnRenderTool
public class AvertToolStripRenderer : ToolStripSystemRenderer
{
protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
{
//base.OnRenderToolStripBorder(e);
}
protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e)
{
e.TextColor = Color.Black;
base.OnRenderItemText(e);
}
protected override void OnRenderArrow(ToolStripArrowRenderEventArgs e)
{
e.ArrowColor = Color.White;
base.OnRenderArrow(e);
}
}
您需要设置toolstrip的渲染器(以防忘记此细节): 自定义渲染器类的下一步:
public class AvertToolStripRenderer : ToolStripProfessionalRenderer
{
//rest of your implementation...
protected override void OnRenderToolStripBackground(ToolStripRenderEventArgs e)
{
ToolStripDropDown dr = e.ToolStrip as ToolStripDropDown;
if (dr != null)
{
e.Graphics.FillRectangle(Brushes.Beige, e.AffectedBounds);
}
}
}
啊。我没有意识到我必须将ToolStrip转换为ToolStrip下拉列表。我猜所有的子控件都继承自ToolStrip?这很有效。谢谢
public class AvertToolStripRenderer : ToolStripProfessionalRenderer
{
//rest of your implementation...
protected override void OnRenderToolStripBackground(ToolStripRenderEventArgs e)
{
ToolStripDropDown dr = e.ToolStrip as ToolStripDropDown;
if (dr != null)
{
e.Graphics.FillRectangle(Brushes.Beige, e.AffectedBounds);
}
}
}