Как отключить строку под полосой инструментов в 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
по умолчанию.