如何将任何HtmlControl作为参数传递给函数

时间:2013-02-26 15:11:29

标签: c# asp.net

刚写了一个函数来检查HTML控件是否被隐藏。 如何将参数myControl的System.Web.UI.HtmlControls.HtmlTableRow类型更改为支持任何HTML控件类型的类型。我更喜欢不为任何html控件编写特定的函数。

 public static bool IsUIElementHidden(System.Web.UI.HtmlControls.HtmlTableRow myControl)
        {            
            if ((myControl.Style["display"] ?? "").ToLower().Equals("none") || (myControl.Style["visibility"] ?? "").ToLower().Equals("none"))
            {
                return true;
            }
            else
            {
                return false;
            }
        }

我尝试使用WebControl类型但是当我将控件传递给函数时,我收到错误。

3 个答案:

答案 0 :(得分:2)

以下是基于对象层次结构的选择:

System.Object 
  System.Web.UI.Control
    System.Web.UI.HtmlControls.HtmlControl
      System.Web.UI.HtmlControls.HtmlContainerControl
        System.Web.UI.HtmlControls.HtmlTableRow

考虑到Style是从System.Web.UI.HtmlControls.HtmlControl继承的,我会选择:

static bool IsUIElementHidden(System.Web.UI.HtmlControls.HtmlControl myControl)

答案 1 :(得分:1)

您正在寻找属于Style的{​​{1}}媒体资源。

所以这应该有效:

System.Web.UI.HtmlControls.HtmlControl

答案 2 :(得分:0)

假设您只有一些控件类型,您希望传递给您的函数,您可以传递一个通用控件和一个字符串来确定要转换为什么样的控件。然后,在您的函数中,将通用控件转换为特定类型。

 Private Sub setControl(ByVal control As Control, ByVal myType As String)
       Select Case myType 
            Case myType  = "label"
                Dim newLabel As New Label
                newLabel = CType(control, Label)

            Case myType  = "textbox"
                Dim newTextBox As New TextBox
                newTextBox = CType(control, TextBox)
        End Select
 end sub

您甚至可以放弃字符串并使用反射来确定它是什么类型的控件。