0

刚刚编写了一个函数来检查 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 类型,但是当我将控件传递给函数时出现错误。

4

3 回答 3

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)
于 2013-02-26T15:16:59.180 回答
1

您正在寻找Style属于 的财产System.Web.UI.HtmlControls.HtmlControl

所以这应该工作:

public static bool IsUIElementHidden(System.Web.UI.HtmlControls.HtmlControl myControl)
        {            
            if ((myControl.Style["display"] ?? "").ToLower().Equals("none") || (myControl.Style["visibility"] ?? "").ToLower().Equals("none"))
            {
                return true;
            }
            else
            {
                return false;
            }
        }
于 2013-02-26T15:19:27.817 回答
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

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

于 2013-02-26T19:47:13.023 回答