Je me demandais si existe une astuce pour utiliser un type comme une expression, par exemple dans ce code:Comment utiliser un type comme expression?
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim ControlType = CheckBox ' CheckBox is a type and cannot be used as an expression
Dim ControlArray(5) As ControlType ' (5) The number of controls to create.
For num As Int64 = 0 To ControlArray.LongLength - 1
ControlArray(num) = New ControlType ' Expected: New CheckBox
ControlArray(num).Text = (ControlType.ToString & num.ToString) ' Expected string: "CheckBox 0"
Me.Controls.Add(ControlArray(num))
Next
End Sub
Je ne demande pas comment je peux faire un tableau de contrôle, je demande si je peux faire un tableau de contrôle générique par exemple en spécifiant le Type dans un var (ControlType) et en l'utilisant comme dans l'exemple de code ci-dessus.
MISE À JOUR
C'est maintenant le code que je suis en train d'utiliser
Je ne peux pas reconnaître l'événement « CheckedChanged » du CheckBox en essayant de joindre le gestionnaire
Également ne peut pas reconnaître la propriété ".Checked" lorsque vous essayez de vérifier la valeur de celui-ci.
Public Class Form1
Dim ControlType As Type = GetType(CheckBox) ' The type of Control to create.
Dim ControlArray(5) As Control ' (5) The number of controls to create.
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
For num As Int64 = 0 To ControlArray.LongLength - 1
ControlArray(num) = Activator.CreateInstance(ControlType) ' Create the control instance (New CheckBox)
ControlArray(num).Name = ControlType.Name & num.ToString ' Name example : CheckBox 0
ControlArray(num).Text = ControlType.Name & num.ToString ' String example: CheckBox 0
ControlArray(num).Top = 20 * num ' Adjust the location of each control.
Me.Controls.Add(ControlArray(num)) ' Add the control to a container.
' This does not work:
AddHandler ControlArray(num).CheckedChanged, AddressOf CheckBoxSub ' Add a event handler to a procedure.
Next
End Sub
Public Sub CheckBoxSub(ByVal sender As Object, ByVal e As System.EventArgs) ' Sub which is handling the controls.
If sender.Checked = True Then MsgBox(sender.name & " is checked") Else MsgBox(sender.name & " is unchecked")
' Just an example of how to use the controls,
' This does not work:
ControlArray(2).checked = True ' CheckBox 2.Checked = True
End Sub
End Class
Merci beaucoup, mais j'ai des problèmes pour ajouter un gestionnaire en utilisant votre modification, pouvez-vous voir ma question mise à jour s'il vous plaît? – ElektroStudios