0

だから私はこの許可アプリを動かそうとしています。「cbo」とadkeyのように、文字列adkeyをチェックボックスの名前にしたいのです。同じ文字列がチェックボックスの名前になるようにします。私はちょっと怒って、ここに全部をコピーしたので、それはちょっと混乱しました。

Dim ADkey As String() =
        {"NoChangingWallpaper", "NoHTMlWallpaper"}
    ' Dim cbo As String = 
    Dim cho As CheckBox
    cho = CType("cbo" & ADkey), CheckBox)
    Dim readvalue = My.Computer.Registry.GetValue(
        "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\ActiveDesktop", ADkey, Nothing)
    'MsgBox("The value is " & CStr(readValue))
    ' Dim cho(ADkey) As CheckBox
    cho.Name = ADkey
    If readvalue = "1" Then
        cho.Checked = True
    Else
        cho.Checked = False
    End If

msgbox部分はテスト用でした

4

1 に答える 1

1

Dictionary(Of String, Checkbox)すべてのチェックボックスをオブジェクトに追加する必要があります。

Dim ADkey As String() =
    {"NoChangingWallpaper", "NoHTMlWallpaper"}

'This code can move to where the checkboxes are first created, as long as you can reach the variable from here
Dim checkboxes As New Dictionary(Of String, Checkbox) From 
  {
     {"NoChangingWallpaper", cboNoChangingWallpaper},
     {"NoHTMlWallpaper", cboNoHTMLWallpaper}
  }

For Each key As String in ADKey.Where(Function(k) checkboxes.ContainsKey(k))
    Dim regvalue As Boolean = (My.Computer.Registry.GetValue(
    "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\ActiveDesktop", key, Nothing)="1")
    Dim box As Checkbox = checkboxes(key)
    box.Name = key
    box.Checked = regvalue
Next Key

そして、これを見ると、キーの二重の記録を保持することを避けるために、文字列配列を完全に切り取って、次のようにすることがあります。

'This code can move to where the checkboxes are first created, as long as you can reach the variable from here
Dim checkboxes As New Dictionary(Of String, Checkbox) From 
  {
     {"NoChangingWallpaper", cboNoChangingWallpaper},
     {"NoHTMlWallpaper", cboNoHTMLWallpaper}
  }

For Each key As String in checkboxes.Keys
    Dim regvalue As Boolean = (My.Computer.Registry.GetValue(
"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\ActiveDesktop", key, Nothing)="1")
    Dim box As Checkbox = checkboxes(key)
    box.Name = key
    box.Checked = regvalue
Next Key

このバージョンが必要かどうかは、常にすべてのボックスを表示しているかどうか、または特定のボックスのみを更新したい場合があるかどうかによって異なります。

于 2012-11-01T19:53:44.977 に答える