设置父控件的启用属性时会发生什么?

时间:2009-01-27 20:38:23

标签: .net asp.net vb.net web-controls

我有一个自定义控件容器,每个控件都有2个控件。一个在启用时显示(即文本框或复选框),以及禁用时显示的标签。

我这样过度重载Render

    Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
        If Me.Enabled Then
            _item.RenderControl(writer)
        Else
            _display_text.RenderControl(writer)
        End If
    End Sub

但是,当我将容器(即表)设置为Enabled = False时,我的预期功能不会发生。相反,我会将文本框和复选框变灰。

设置父级Enabled属性时实际发生了什么?我的假设是,它将这种状态传播给所有孩子,但似乎我错了。

谢谢!

1 个答案:

答案 0 :(得分:0)

简短回答是你的假设实际上是错误的。

如果你喜欢(并且正在扩展WebControl,并且你的容器有一个runat = server),你可以使用

If NamingContainer.Enabled Then

而不是

If Me.Enabled Then

但属性不会在asp中自动传播到树中。