8

我阅读了其他几篇关于人们如何自定义 MenuStrip 的颜色和渐变的文章。

我想要做的是删除渐变,以便 MenuStrip 与表单的其余部分颜色相同,对我来说,这是创建新 WinForms 项目时使用的默认设置。我尝试将其更改RenderMode为“系统”并且它可以工作,但是当我构建和运行它时,它会在 MenuStrip 的长度上留下一条白线。我必须做一些绘画和绘画吗?或者有没有更简单的方法?

4

2 回答 2

9

这基本上和这个问题一样

答案引用了这个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();

我刚试了一下,它似乎工作得很好。

于 2011-02-16T03:45:04.647 回答
3

我同意 Yetti,但如果你想保持你的边界,你可以试试这个。用你的背景颜色替换画笔

protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
{
  base.OnRenderToolStripBorder(e);
  e.Graphics.FillRectangle(Brushes.Black, e.ConnectedArea);
}
于 2011-11-07T20:29:23.890 回答