如何确定页面上是否启用了控件?

How do I determine if a control is enabled on a page?

提问人:Patrick McDonald 提问时间:6/18/2009 更新时间:6/18/2009 访问量:191

问:

我在aspx页面上的面板中有一个TextBox。

如果未启用 textBox,我需要禁用 RequiredFieldValidator。

如果禁用了 Panel,并且 TextBox.Enabled 为 True,则在页面上禁用了文本框(这很好)。

那么,如果 Enabled 属性不可靠,我如何确定页面上的 TextBox 是否被禁用?

请注意,我需要一个通用的解决方案,因为可能有许多嵌套的容器级别,而容器并不总是面板。

asp.net

评论


答:

1赞 John Rasch 6/18/2009 #1

如何禁用容器控件?是否有原因在禁用其容器时无法禁用 and 控件?TextboxRequiredFieldValidator

4赞 albertein 6/18/2009 #2

可以跨控件层次结构执行递归搜索,如果控件处于 Enabled 状态,则控件为 Enabled,并且其所有祖先也处于 Enabled。

bool IsControlEnabled (WebControl control)
{
    if (!(control.Parent is WebControl)) 
        return control.Enabled;

    return control.Enabled && 
        IsControlEnabled(control.Parent as WebControl);
}