Vb.net Visual Studio、窗体、标签已禁用,但保留前景色(Visual Basic)

Vb.net Visual Studio、窗体、标签已禁用,但保留前景色(Visual Basic),vb.net,winforms,visual-studio-2015,label,Vb.net,Winforms,Visual Studio 2015,Label,我在Visual Studio中有一个表单,表单中的一个标签需要禁用(在行为类别下,已启用设置为False) 当标签行为设置为“Enabled=False”时,当我运行应用程序时,标签的前景色将变为灰色。如果我想保持原色,我该怎么做呢? 我要使用的前景色是白色的。解决方案是继承标签类,然后对基本的启用属性进行阴影处理: Public Class MyLabel : Inherits Label ' https://referencesource.microsoft.com/#Syste

我在Visual Studio中有一个表单,表单中的一个标签需要禁用(在行为类别下,
已启用
设置为
False

当标签行为设置为“Enabled=False”时,当我运行应用程序时,标签的前景色将变为灰色。如果我想保持原色,我该怎么做呢?
我要使用的前景色是白色的。

解决方案是继承
标签
类,然后对基本的
启用属性进行阴影处理:

Public Class MyLabel : Inherits Label

    ' https://referencesource.microsoft.com/#System.Windows.Forms/winforms/Managed/System/WinForms/Control.cs,eb7c3ce1cd1cb1d3
    Public Overridable Shadows Property Enabled As Boolean
        Get
            If (MyBase.Parent IsNot Nothing) Then
                Return MyBase.Parent.Enabled
            Else
                Return Me.enabledB
            End If
        End Get
        Set(value As Boolean)
            If (value <> Me.enabledB) Then
                Me.enabledB = value
                MyBase.OnEnabledChanged(EventArgs.Empty)
            End If
        End Set
    End Property
    Private enabledB As Boolean ' Backing field

    Public Sub New()
        Me.enabledB = True
    End Sub

End Class
公共类MyLabel:继承标签
' https://referencesource.microsoft.com/#System.Windows.Forms/winforms/Managed/System/WinForms/Control.cs,eb7c3ce1cd1cb1d3
公共可覆盖阴影属性已启用为布尔值
得到
如果(MyBase.Parent不是空的),那么
返回MyBase.Parent.Enabled
其他的
Return Me.enabledB
如果结束
结束
设置(值为布尔值)
如果(value Me.enabledB)那么
Me.enabledB=值
MyBase.OneEnabledChanged(EventArgs.Empty)
如果结束
端集
端属性
Private enabledB作为布尔值的支持字段
公共分新()
Me.enabledB=True
端接头
末级

为什么需要禁用标签?标签不是交互式控件。当你认为你的标签是“残疾的”时,试着改变前景色。我知道我会得到这个问题…我甚至想解释一下,但却置之不理。原因:我没有为表单使用标准的Windows边框,我制作了自己的面板,可以在表单中移动。面板中有一个标签,如果我跳过标签,我就不能拖动表单,除非它是“禁用”的。当标签被禁用时,我尝试更改前景色,这不起作用。。。它仍将保持灰色。