删除 ToolStrip 下的线 VB.Net

Remove Line Under ToolStrip VB.Net

我已将 ToolStrip 添加到表单中,该表单将用于添加菜单并设置背景颜色以匹配表单背景颜色,但它总是在 ToolStrip 下方显示一条水平线,这让我感到分心。

我目前的解决方法是使用 StatusStrip 并添加下拉按钮 但理想情况下我更愿意使用 ToolStrip,因为我相信这是添加菜单的首选工具

经过研究,我认为它与渲染有关 属性 我已经阅读了关于创建覆盖的地方。

谁能告诉我如何在 VB.Net 中实现这一目标的示例。

这里是我所指内容的截图

我已将工具条设置为与我放入其中的面板相同的颜色。

工具条下方是一条白线,我觉得它很烦人,希望能够将其删除。

这只是 code provided in this previous SO question 的 VB.Net 版本。

显然,该行将出现在您表单上的 design-time 处,但会在 run-time:

处消失
Public Class Form1

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ToolStrip1.Renderer = New ToolStripRenderer
    End Sub

    Public Class ToolStripRenderer
        Inherits ToolStripProfessionalRenderer

        Public Sub New()
            MyBase.New()
        End Sub

        Protected Overrides Sub OnRenderToolStripBorder(e As ToolStripRenderEventArgs)
            If Not (TypeOf e.ToolStrip Is ToolStrip) Then
                MyBase.OnRenderToolStripBorder(e)
            End If
        End Sub

    End Class

End Class

另一种方法是创建一个全新的 class,它继承自 ToolStrip 并为您创建渲染器。然后该行也会在 design-time 处消失。编译后,新控件将出现在工具箱的顶部。不幸的是,这意味着您必须删除旧的 ToolStrip 并将一个新的(您的版本)拖到表单上并重新配置它:

Public Class MyToolStrip
    Inherits ToolStrip

    Public Sub New()
        MyBase.New
        Me.Renderer = New ToolStripRenderer
    End Sub

    Public Class ToolStripRenderer
        Inherits ToolStripProfessionalRenderer

        Public Sub New()
            MyBase.New()
        End Sub

        Protected Overrides Sub OnRenderToolStripBorder(e As ToolStripRenderEventArgs)
            If Not (TypeOf e.ToolStrip Is ToolStrip) Then
                MyBase.OnRenderToolStripBorder(e)
            End If
        End Sub

    End Class

End Class

感谢您解释如何做到这一点。我选择了第二个选项,因为这对我想要的东西来说似乎更方便,我想我可以保存它 Class 并在以后的项目中重用它。

我仍然需要学习 Class 并探索它们的用途和使用方式。

Public Class MyToolStrip
Inherits ToolStrip

Public Sub New()
    MyBase.New
    Me.Renderer = New ToolStripRenderer
End Sub

Public Class ToolStripRenderer
    Inherits ToolStripProfessionalRenderer

    Public Sub New()
        MyBase.New()
    End Sub

    Protected Overrides Sub OnRenderToolStripBorder(e As ToolStripRenderEventArgs)
        If Not (TypeOf e.ToolStrip Is ToolStrip) Then
            MyBase.OnRenderToolStripBorder(e)
        End If
    End Sub

End Class

结束Class