如何禁用 winform C# 中工具条下的行?

发布于 2024-08-15 02:22:54 字数 170 浏览 5 评论 0原文

替代文本

这行?     

alt text

this line ?
    

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

灵芸 2024-08-22 02:22:55

建议的仅隐藏工具条边框而不隐藏下拉菜单边框的解决方案不起作用。

这就是诀窍:

protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
    {
        //if (!(e.ToolStrip is ToolStrip)) base.OnRenderToolStripBorder(e); - does not work!
        if (e.ConnectedArea.Width != 0) base.OnRenderToolStripBorder(e);
    } 

The proposed solution to hide only toolstrip border and not dropdownmenu border does not work.

This is what does the trick:

protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
    {
        //if (!(e.ToolStrip is ToolStrip)) base.OnRenderToolStripBorder(e); - does not work!
        if (e.ConnectedArea.Width != 0) base.OnRenderToolStripBorder(e);
    } 
万劫不复 2024-08-22 02:22:54

这是“系统”渲染器中的错误,此错误报告。

Microsoft 的回应提供了一个非常简单的解决方法:

1) 创建 ToolStripSystemRenderer 的子类,覆盖 OnRenderToolStripBorder 并使其成为无操作:

public class MySR : ToolStripSystemRenderer
{
    public MySR() { }

    protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
    {
        //base.OnRenderToolStripBorder(e);
    }
}

2) 为您的工具条使用该渲染器。必须在对工具条的 RenderMode 属性进行任何分配之后分配呈现器,否则它将被对 System.Windows.Forms 呈现器的引用覆盖。

toolStrip3.Renderer = new MySR();

It's a bug in the "system" renderer, details in this bug report.

Microsoft's response gives a very easy workaround:

1) Create a subclass of ToolStripSystemRenderer, overriding OnRenderToolStripBorder and making it a no-op:

public class MySR : ToolStripSystemRenderer
{
    public MySR() { }

    protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
    {
        //base.OnRenderToolStripBorder(e);
    }
}

2) Use that renderer for your toolstrip. The renderer must be assigned after any assignment to the toolstrip's RenderMode property or it will be overwritten with a reference to a System.Windows.Forms renderer.

toolStrip3.Renderer = new MySR();
南薇 2024-08-22 02:22:54

您可能需要添加类型检查以避免 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);
    }
}

使用ToolStripSystemRenderer时,错过ToolStripDropDownMenu边框并不那么明显,但会变得非常碍眼使用ToolStripProfessionalRenderer

此外,如果您希望应用程序范围内的所有 ToolStrip 实例都使用 MySR,设置 System.Windows.Forms.ToolStripManager.Renderer = new MySR(); 可能会很有用。代码> 默认情况下。

You might want to add type check to avoid missing border on ToolStripDropDownMenu/etc. (since inherited from ToolStrip, it starts same custom renderer usage automatically):

protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
{
    if (e.ToolStrip.GetType() == typeof(ToolStrip))
    { 
        // skip render border
    }
    else
    {
        // do render border
        base.OnRenderToolStripBorder(e);
    }
}

Missed ToolStripDropDownMenu border is not so noticable while using ToolStripSystemRenderer but become real eyesore with ToolStripProfessionalRenderer.

Also, setting System.Windows.Forms.ToolStripManager.Renderer = new MySR(); could be usefull if you want all ToolStrip instances appwide to use MySR by default.

音盲 2024-08-22 02:22:54

这个课程比其他课程更完整!

public class ToolStripRender : ToolStripProfessionalRenderer
{
    public ToolStripRender() : base() { }

    protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
    {
        if (!(e.ToolStrip is ToolStrip))
            base.OnRenderToolStripBorder(e);
    }
}

This class is more complete than other!

public class ToolStripRender : ToolStripProfessionalRenderer
{
    public ToolStripRender() : base() { }

    protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
    {
        if (!(e.ToolStrip is ToolStrip))
            base.OnRenderToolStripBorder(e);
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文