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

时间:2011-02-16 03:05:46

标签: c# .net winforms gradient menustrip

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

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

2 个答案:

答案 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);
}