我读了一些关于人们如何定制MenuStrip的颜色和渐变的文章。
我想要做的是删除渐变,以便MenuStrip与表单的其余部分颜色相同,对我来说,这是创建新WinForms项目时使用的默认设置。我尝试将RenderMode
更改为'System'并且它的工作类型,但是当我构建并运行它时,它会在MenuStrip的长度上留下一条白线。我是否需要做一些绘画和绘画?或者有更简单的方法吗?
答案 0 :(得分:7)
这与此one
基本相同答案引用此Microsoft bug post
从2005年开始,这似乎是一个问题。尽管评论说这是一个无法修复的MS错误,但有一个解决方法涉及实现自己的渲染器:
public class MySR : ToolStripSystemRenderer
{
public MySR()
{
}
protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
{
//base.OnRenderToolStripBorder(e);
}
}
然后你所要做的就是将你的menustrip的渲染器设置为你刚刚实现的渲染器:
menustrip1.Renderer = new MySR();
我刚试了一下它似乎工作正常。
答案 1 :(得分:2)
我同意Yetti,但如果你想保持你的边界,你可以试试这个。用您的背景颜色替换画笔
protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
{
base.OnRenderToolStripBorder(e);
e.Graphics.FillRectangle(Brushes.Black, e.ConnectedArea);
}