「 Cheat_Enabled」と呼ばれる変数があります。
Dim Cheat_Enabled As Boolean
そして、「CheckBox_Cheat」というタグが付いた「Cheat」という名前のチェックボックス
ここで、コントロールの名前を分割 (または何か) して var の値を変更する動的メソッドを実行したいと考えています。
たとえば、次のようなものです (コードは明らかに機能しません)。
Private Sub CheckBoxes_CheckedChanged(sender As Object, e As EventArgs) Handles _
CheckBox_Cheat.CheckedChanged
Dim SenderVarEquivalent As Object = _
Me.variables.Find(sender.Tag & "_Enabled")(0)
If sender.Checked Then SenderVarEquivalent = True _
Else SenderVarEquivalent = False
End Sub
' Info:
' Sender.Tag = "Cheat"
' Sender.Name = "CheckBox_Cheat"
' VariableName = "Cheat_Enabled"
これは 1 つの CType または DirectCast または GetObject で実行できると思いますが、正確な方法はわかりません。
アップデート:
これは同様の簡単なコードですが、ControlName を VariableName に変換する代わりに、コントロール タグを Checkbox の ControlName オブジェクトに変換しています。
Public Class Form1
Dim Cheat_Enabled As Boolean = True
Private Sub CheckBox_Cheat_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox_Cheat.CheckedChanged
CType(Controls("CheckBox" & "_" & sender.tag), CheckBox).Checked = Cheat_Enabled
End Sub
End Class
たとえば、次のように、変数名をキャッチして使用するためにコントロール名を CType に同じことを行うことができれば幸いです。
Dim Cheat_Enabled As Boolean
Private Sub CheckBox_Cheat_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox_Cheat.CheckedChanged
' Sender.name is : "CheckBox_Cheat"
' Sender.tag is : "Cheat"
' Variable name is: "Cheat_Enabled"
If sender.checked Then
CType(Variable(sender.tag & "_Enabled"), Boolean) = True
Else
CType(Variable(sender.tag & "_Enabled"), Boolean) = False
End If
End Sub