Подтвердить что ты не робот

Как удалить этот странный визуальный артефакт в углу элемента управления ToolStrip Winforms?

Вот картина, которая показывает проблему. Посмотрите на нижний правый угол.

Кто-нибудь знает, как избавиться от него?

Настройка LayoutStyle на VerticalStackWithOverflow исправляет его, но также центрирует объекты, которые я не хочу использовать горизонтально.

Я просто хочу вертикальный стек, как на рис., но без этой черной линии в нижнем правом углу.

enter image description here

4b9b3361

Ответ 1

В панели свойств установите "RenderMode" в "System" или используйте

.RenderMode = System.Windows.Forms.ToolStripRenderMode.System;

Выполнение этого изменит .BackColor на "Control", но вы можете изменить его после того, как захотите.

Ответ 2

Извините за опоздание на вечеринку, но принятый ответ не сработал для моих нужд. Следующее решение - это то, с чем я столкнулся:

Избавление от черной линии

1) Создайте собственный рендерер:

class CustomToolStripProfessionalRenderer : ToolStripProfessionalRenderer
{
    protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
    {
        // Don't draw a border
    }
}

2) Используйте собственный рендерер:

toolStrip1.Renderer = new CustomToolStripProfessionalRenderer();

Избавление от фона

Вышеупомянутое решение удовлетворяет потребности в исходном вопросе, но мне тоже не понравился фон градиента на ToolStrip. Я хотел, чтобы ToolStrip был "невидимым" контейнером:

1) Создайте пользовательскую таблицу цветов:

class CustomProfessionalColorTable : ProfessionalColorTable
{
    public override Color ToolStripGradientBegin
    {
        get { return SystemColors.Control; }
    }

    public override Color ToolStripGradientMiddle
    {
        get { return SystemColors.Control; }
    }

    public override Color ToolStripGradientEnd
    {
        get { return SystemColors.Control; }
    }
}

2) Используйте таблицу пользовательских цветов:

class CustomToolStripProfessionalRenderer : ToolStripProfessionalRenderer
{
    public CustomToolStripProfessionalRenderer()
        : base(new CustomProfessionalColorTable())
    {

    }

    protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
    {
        // Don't draw a border
    }
}

Ответ 3

Я думаю, что ваш лучший снимок - установить RenderMode в System в свойствах и оставить свойства макета HorizontalStackWithOverflow. Но это, если вы не возражаете изменить стиль рисования всплывающей подсказки.