эта линия?
Как отключить строку под панелью инструментов в winform С#?
Ответ 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
по умолчанию.