我阅读了其他几篇关于人们如何自定义 MenuStrip 的颜色和渐变的文章。
我想要做的是删除渐变,以便 MenuStrip 与表单的其余部分颜色相同,对我来说,这是创建新 WinForms 项目时使用的默认设置。我尝试将其更改RenderMode
为“系统”并且它可以工作,但是当我构建和运行它时,它会在 MenuStrip 的长度上留下一条白线。我必须做一些绘画和绘画吗?或者有没有更简单的方法?
答案引用了这个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();
我刚试了一下,它似乎工作得很好。
我同意 Yetti,但如果你想保持你的边界,你可以试试这个。用你的背景颜色替换画笔
protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
{
base.OnRenderToolStripBorder(e);
e.Graphics.FillRectangle(Brushes.Black, e.ConnectedArea);
}