我读了几篇关于人们想要如何自定义MenuStrip的颜色和渐变的文章。如何删除在MenuStrip控件下绘制的白线?
我想要做的是删除渐变,以便MenuStrip与窗体的其余部分颜色相同,对于我来说,这是创建新的WinForms项目时使用的默认设置。我试着将RenderMode
更改为“系统”,它的工作原理有点类似,但是当我构建并运行它时,它会在MenuStrip的长度上留下一条白线。我必须做一些绘画和绘画吗?还是有更简单的方法?
我读了几篇关于人们想要如何自定义MenuStrip的颜色和渐变的文章。如何删除在MenuStrip控件下绘制的白线?
我想要做的是删除渐变,以便MenuStrip与窗体的其余部分颜色相同,对于我来说,这是创建新的WinForms项目时使用的默认设置。我试着将RenderMode
更改为“系统”,它的工作原理有点类似,但是当我构建并运行它时,它会在MenuStrip的长度上留下一条白线。我必须做一些绘画和绘画吗?还是有更简单的方法?
这基本上是因为这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();
我刚试过,它似乎工作得很好。
我同意Yetti,但如果你想保持你的边界,你可以试试这个。用你的背景替换画笔颜色
protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
{
base.OnRenderToolStripBorder(e);
e.Graphics.FillRectangle(Brushes.Black, e.ConnectedArea);
}
确实是一个重复的问题,但你的答案在这里要好得多。主要是因为您花时间复制并粘贴了解决方法代码。 – 2011-02-16 04:12:04
这个bug对于这个bug来说是相当无用的,大约6年,后来2个版本,它仍然没有修复!感谢您的回答Yetti,我很感激。 – BrandNewDev 2011-02-16 09:14:07