Как отключить строку под полосой инструментов в winform c#?
2 ответов
это ошибка в" системном " рендерере, подробности в этот отчет об ошибке.
ответ Microsoft дает очень простой обходной путь:
1) Создайте подкласс ToolStripSystemRenderer переопределение OnRenderToolStripBorder и делает его no-op:
public class MySR : ToolStripSystemRenderer
{
public MySR() { }
protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
{
//base.OnRenderToolStripBorder(e);
}
}
2) Используйте этот визуализатор для вашей toolstrip:
toolStrip3.Renderer = new MySR();
вы можете добавить проверку типа, чтобы избежать пропущенной границы на ToolStripDropDownMenu / etc. (так как наследуется от 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 экземпляры appwide для использования MySR по умолчанию.