刚写了一个函数来检查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类型但是当我将控件传递给函数时,我收到错误。
答案 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
您甚至可以放弃字符串并使用反射来确定它是什么类型的控件。