.net 自定义重写UserControl的Enabled属性?

.net 自定义重写UserControl的Enabled属性?,.net,vb.net,user-controls,controls,.net,Vb.net,User Controls,Controls,我有一个带有1个文本框和一个按钮的用户_控件。我希望以这种方式覆盖控件的Enabled属性,保持按钮始终处于启用状态,并且控件的enable/disable仅影响文本框 如何存档? 提前谢谢 编辑:我想我的问题可能不清楚。实际上,我已经覆盖了Enabled属性,如下所示 Private m_Enabled As Boolean Public Overloads Property Enabled() As Boolean Get Return m_Enabled E

我有一个带有1个文本框和一个按钮的用户_控件。我希望以这种方式覆盖控件的Enabled属性,保持按钮始终处于启用状态,并且控件的enable/disable仅影响文本框

如何存档? 提前谢谢

编辑:我想我的问题可能不清楚。实际上,我已经覆盖了Enabled属性,如下所示

Private m_Enabled As Boolean
Public Overloads Property Enabled() As Boolean
    Get
        Return m_Enabled
    End Get
    Set(ByVal value As Boolean)
        Button1.Enabled = True
        TextBox1.Enabled = value
        m_Enabled = value
    End Set
End Property
我将这个用户控件和其他几个文本框放在了一个面板1中。我尝试一个接一个地循环控制并禁用它

    For Each panelControl As Control In Panel1.Controls
        panelControl.Enabled = False
    Next panelControl
在这种情况下,从未调用此已启用属性。(整个控件被禁用/启用)


有人能帮我吗?

问题在于您的强制转换:
将每个panelControl转换为控件
,它将使用控件的enabled属性,而不是重载

请尝试铸造:

For Each ctrl As UserControl1 In Panel2.Controls.OfType(Of UserControl1)()
  ctrl.Enabled = False
Next
在这种情况下,要非常小心
重载。它所做的一切都会抑制编译器发出的警告,该警告会告诉您可能做错了。启用的属性不是虚拟的,因此无法覆盖它。实际上,您正在创建另一个同名属性。你的循环没有使用它。您最好创建另一个名为TextBoxEnabled的属性。