如何删除MenuStrip控件下绘制的白线?

Bra*_*Dev 6 .net c# gradient menustrip winforms

我读了一些关于人们如何定制MenuStrip的颜色和渐变的文章.

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

Yet*_*tti 8

这基本上是因为这个同样的问题一个

答案引用了这篇微软的帖子

从2005年开始,这似乎是一个问题.虽然评论说这是一个无法修复的MS错误,但有一个解决方法涉及实现自己的渲染器:

public class MySR : ToolStripSystemRenderer
{
    public MySR()
    {
    }

    protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
    {
        //base.OnRenderToolStripBorder(e);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,您只需将menustrip的渲染器设置为刚刚实现的渲染器:

menustrip1.Renderer = new MySR();
Run Code Online (Sandbox Code Playgroud)

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