1

我有一个 CheckOnClick 属性设置为 true 的 ToolStripButton。单击它时,Checked 属性变为 true,并且按钮周围出现蓝色边框,并且只要处于选中状态,它就会一直保持在那里。我想去掉这个边框,因为我自己改变了背景颜色来表示按钮被选中。我怎么能那样做?我尝试使用 ToolStripRenderer,但找不到方法。

4

1 回答 1

1

实施你自己的ToolStripRenderer应该会给你你正在寻找的东西。我对使用这些并不熟悉,但我能够通过以下实现获得我相信您正在寻找的功能。

Public Class BorderlessToolStripRenderer
    Inherits Windows.Forms.ToolStripProfessionalRenderer

    Protected Overrides Sub OnRenderButtonBackground(e As System.Windows.Forms.ToolStripItemRenderEventArgs)
        Dim button = TryCast(e.Item, ToolStripButton)

        If (button IsNot Nothing AndAlso button.Checked) Then
            e.Graphics.Clear(Color.Yellow)
        Else
            MyBase.OnRenderButtonBackground(e)
        End If

    End Sub

End Class

我假设您正在使用ToolStripProfessionalRenderer,所以我继承了那个,并且在按钮处于选中状态时省略了标准背景渲染。这会使鼠标悬停在指示器上,但在选中时会忽略边框,而是呈现黄色背景。

当然,要使用这个类,你只需要像这样设置Renderer你的属性ToolStrip

Me.ToolStrip1.Renderer = New BorderlessToolStripRenderer()
于 2013-10-17T06:43:12.897 回答