Как удалить белую линию, нарисованную под элементом управления MenuStrip? - PullRequest
5 голосов
/ 16 февраля 2011

Я прочитал несколько других статей о том, как люди хотят настроить цвета и градиенты MenuStrip.

То, что я хочу сделать, это удалить градиент, чтобы у MenuStrip был тот же цвет, что и у остальной формы, что для меня является настройками по умолчанию, используемыми при создании нового проекта WinForms. Я попытался изменить RenderMode на «Система», и это работает вроде как, но он оставляет белую линию длины MenuStrip при сборке и запуске. Нужно ли рисовать и рисовать? Или есть более простой способ?

Ответы [ 2 ]

7 голосов
/ 16 февраля 2011

Это в основном тот же вопрос, что и этот один

Ответ ссылается на это Сообщение об ошибке Microsoft

Кажется, это проблема для всехпуть с 2005 года. Хотя в комментариях говорится, что это ошибка MS, которая не будет исправлена, есть обходной путь, который включает в себя реализацию вашего собственного средства визуализации:

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

    protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
    {
        //base.OnRenderToolStripBorder(e);
    }
}

Тогда все, что вам нужно сделать, это установитьМодуль рендеринга menustrip к тому, который вы только что реализовали:

menustrip1.Renderer = new MySR();

Я только что опробовал его, и, похоже, он работает отлично.

2 голосов
/ 08 ноября 2011

Я согласен с Йети, но если вы хотите сохранить свои границы, вы можете попробовать это. Замените кисть своим цветом фона

protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
{
  base.OnRenderToolStripBorder(e);
  e.Graphics.FillRectangle(Brushes.Black, e.ConnectedArea);
}
...