1

フォームのすべてのチェックボックスにレジストリ キーを設定しようとしていますが、次のコード ブロックでエラーが発生します。'Checked' is not a member of 'System.Windows.Forms.Control'

誰かがこのエラーが発生する理由を見つけるのを手伝ってもらえますか?

' Create the data for the 'Servers' subkey
Dim SingleControl As Control    ' Dummy to hold a form control
For Each SingleControl In Me.Controls
    If TypeOf SingleControl Is CheckBox Then
        Servers.SetValue(SingleControl.Name, SingleControl.Checked) ' Error happening here
    End If
Next SingleControl
4

5 に答える 5

0

拡張メソッドを使用して、フォーム内の他のコンテナー内のコントロール (パネル、グループボックスなど) を含む、フォーム上のすべてのコントロールを取得します。

<Extension()> _
Public Function ChildControls(Of T As Control)(ByVal parent As Control) As List(Of T)
    Dim result As New ArrayList()
    For Each ctrl As Control In parent.Controls
        If TypeOf ctrl Is T Then result.Add(ctrl)
        result.AddRange(ChildControls(Of T)(ctrl))
    Next
    Return result.ToArray().Select(Of T)(Function(arg1) CType(arg1, T)).ToList()
End Function

使用法:

Me.ChildControls(Of CheckBox). _
    ForEach( _
        Sub(chk As CheckBox)
            Servers.SetValue(chk.Name, chk.Checked)
        End Sub)
于 2013-04-08T15:29:53.403 に答える