我正在开发一个Windows表单应用程序 (C#,.NET 4.0,VS 2010),其中我有一个带有ToolStrip的标准MainForm (GripStyle: Hidden,Dock: Top,RenderMode: ManagerRenderMode)。ToolStrip包含一些基本项(ToolStripLabel、ToolStripSeparator、ToolStripSplitButton)。
渲染如下:
起初,我只想在toolstrip下方添加一个“底部”边框,但我还注意到这个toolstrip被渲染为“圆角”(你可以在图像中看到右侧顶部和底部的圆角),并有一条垂直渐变线。
我该如何使这些角不是圆的?
我尝试过:
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(不使用我的渲染器)。在这种情况下,工具栏的角似乎很贴合(矩形),但是工具栏中的分割按钮似乎已经损坏了(单击向下箭头不会显示下拉列表),原因尚不清楚,整体外观感觉有点平淡(在工具栏中悬停在某些按钮上之前)。
我想最终我宁愿坚持ManageeRenderedMode或从Professional中继承的自定义渲染器,但我需要摆脱圆角。我还找到了这个SO Q,它似乎接近我正在寻找的内容,但没有为我的情况提供答案。
谢谢您提前。