加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – ToolStrip圆角

发布时间:2020-12-15 08:07:59 所属栏目:百科 来源:网络整理
导读:我正在开发一个 Windows窗体应用程序(C#,.NET 4.0,VS 2010),其中我有一个非常标准的MainForm,带有ToolStrip(GripStyle:Hidden,Dock:Top,RenderMode:ManagerRenderMode).工具条包含一些基本项(ToolStripLabel,ToolStripSeparator,ToolStripSplitButton).
我正在开发一个 Windows窗体应用程序(C#,.NET 4.0,VS 2010),其中我有一个非常标准的MainForm,带有ToolStrip(GripStyle:Hidden,Dock:Top,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(而不是使用我的渲染器).在这种情况下,工具条角似乎适合(矩形),但工具栏中的拆分按钮似乎被打破(单击向下箭头不显示下拉列表),原因尚不明确,整体外观-feel有点平庸(相当平坦,直到你将鼠标悬停在工具条中的某些按钮上).

我想最后我宁愿坚持使用ManageeRenderedMode,或者继承自Professional的自定义渲染器 – 但我需要摆脱圆角.
其中,我发现this SO Q似乎与我正在看的很接近,但没有给我一个答案.

提前致谢

解决方法

在渲染器类中尝试此操作:
public class MainFormToolStripRenderer : ToolStripProfessionalRenderer {

  public MainFormToolStripRenderer() {
    this.RoundedEdges = false;
  }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读