0

表示できる引数を指定してこのプロシージャを呼び出すだけで、「X」コントロール オブジェクトの可視プロパティを「False/True」に変更する汎用プロシージャを作成しようとしています。

    ' Desired usage:
    ' Disable_Controls(CheckBox, Me.Panel1.Controls, False)

    Public Sub Disable_Controls(ByVal ControlType As Control, _
                                ByVal Container As ControlCollection, _
                                ByVal Visible As Boolean)

        For Each Control As Control In Container
            ' If TypeOf Control Is CheckBox then...
            If TypeOf Control Is Control Then
                Control.Visible = Visible
            End If
        Next

    End Sub

問題は、私がやろうとしているようにコントロール名 ("Checkbox") を渡すことができないことです。"CType(Control, CheckBox)" を使用していくつか試してみましたが、うまくいきませんでした。

どうすればそれができますか?

4

1 に答える 1

1
Public Sub Disable_Controls(Of T As Control)(ByVal Container As Control, _
                            ByVal Visible As Boolean)
    For Each ctrl As T In Container.Controls.OfType(Of T)()
        ctrl.Visible = Visible
    Next
End Sub

次のように呼び出します。

Disable_Controls(Of Checkbox)(MyGroupbox, False)
于 2013-06-04T20:36:38.367 に答える