我正在开发一个 Windows 窗体应用程序(C#、.NET 4.0、VS 2010),其中我有一个带有 ToolStrip 的非常标准的 MainForm(GripStyle:隐藏,Dock:顶部,RenderMode:ManagerRenderMode)。工具条包含一些基本项(ToolStripLabel、ToolStripSeparator、ToolStripSplitButton)。
这呈现如下:
起初我只是想在工具条下方添加一个“底部”边框,但我也注意到这个工具条是用“圆角”渲染的(您可以在图像中看到右侧的顶部和底部),并且垂直渐变线。
我怎样才能使这些角不圆?
我试过:
public class MainFormToolStripRenderer : ToolStripProfessionalRenderer
{
protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
{
base.OnRenderToolStripBorder(e);
var y = e.ToolStrip.Height-1;
e.Graphics.DrawLine(new Pen(SystemColors.ControlDark, 1), new Point(0, y), new Point(e.ToolStrip.Width, y));
}
this.toolStrip_Actions.Renderer=new MainFormToolStripRenderer();
并通过我的表单初始化将其连接起来。
这给了我底部边框,但对圆角没有做任何事情。此外,通过添加底部边框,圆角更加明显:
接下来,我尝试在上面的同一事件处理程序中绘制一个矩形,以尝试(至少)将圆角和垂直渐变隐藏在实心矩形边框后面。这不起作用,因为可用的绘图区域(e.AffectedBounds)在圆形边框内。
我还尝试将 ToolStrip 的 RenderMode 设置为 System(而不是使用我的渲染器)。在这种情况下,工具条的角落似乎很贴合(矩形),但工具栏中的拆分按钮似乎已损坏(单击向下箭头不显示下拉菜单),原因尚不清楚,整体外观-n -feel 有点令人印象深刻(非常平淡,直到您将鼠标悬停在工具条中的某些按钮上)。
我想最后我宁愿坚持使用 ManageeRenderedMode,或者从 Professional 继承的自定义渲染器 - 但我需要摆脱圆角。其中,我发现这个 SO Q似乎与我正在查看的内容接近,但没有为我的案例提供答案。
提前致谢