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

Assuming you only have a few control types you expect to pass to your function, you could pass a generic control and a string to determine what kind of control to cast to. Then, in your function, cast the generic control to a specific type.

 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

You might even be able to forgo the string and use reflection to determine what type of control it is.

于 2013-02-26T19:47:13.023 に答える