Как отключить строку под панелью инструментов в winform С#?

alt text

эта линия?

Ответ 1

Это ошибка в "системном" рендерере, подробности в этот отчет об ошибках.

Ответ Microsoft дает очень простой способ:

1) Создайте подкласс ToolStripSystemRenderer, переопределив OnRenderToolStripBorder и сделав его no-op:

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

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

2) Используйте этот рендерер для своей панели инструментов:

toolStrip3.Renderer = new MySR();

Ответ 2

Возможно, вы захотите добавить проверку типа, чтобы избежать отсутствия границы на ToolStripDropDownMenu/и т.д. (поскольку он унаследован от ToolStrip, он автоматически запускает такое же использование пользовательского средства визуализации):

protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
{
    if (e.ToolStrip.GetType() == typeof(ToolStrip))
    { 
        // skip render border
    }
    else
    {
        // do render border
        base.OnRenderToolStripBorder(e);
    }
}

Пропущенная граница ToolStripDropDownMenu не очень заметна при использовании ToolStripSystemRenderer, но становится реальным бельмом на глазах с помощью ToolStripProfessionalRenderer.

Кроме того, установка System.Windows.Forms.ToolStripManager.Renderer = new MySR(); может быть полезна, если вы хотите, чтобы все экземпляры ToolStrip по умолчанию использовали MySR по умолчанию.