Les evenements des controles en dinamique

Signaler
Messages postés
16
Date d'inscription
jeudi 27 janvier 2005
Statut
Membre
Dernière intervention
25 mars 2010
-
Messages postés
16
Date d'inscription
jeudi 27 janvier 2005
Statut
Membre
Dernière intervention
25 mars 2010
-
salut tous le monde,

je dois créer des textbox en dinamique et gérer ses evenements dinamiquement
je ne sais pas où est mon erreur dans le code!
est ce qu'il y a quelle qu'un qui peux m'aider en expliquant la bonne methode pour controler les evenements de ces controles?
je vous remercie en avance
voici mon code
Public Class Form1
Dim i As Integer

Dim macollection As New Collection
Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim champ As New TextBox

i = i + 1

champ.Name = "tot" & Str(i)
Me.Controls.Add(champ)
macollection.Add(champ)

champ.Top = 30 * i
champ.Left = 100
champ.Width = 400
champ.Height = 20

macollection(i).Text = "voila je suis numero" & Str(i) & Chr(32) & macollection(i).Left & Chr(32) & macollection(i).Top
AddHandler champ.KeyPress, AddressOf changerletexte

End Sub

Private Sub changerletexte(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)

Dim k As Integer = 0
For k = 0 To macollection.Count
If macollection(k) = sender.name Then
MsgBox(macollection(k).text)
End If
Next

End Sub
End Class

6 réponses

Messages postés
14774
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
7 mars 2021
151
Bonjour,

Pour gérer les events de controles crés dynamiquement, regarde le mot clé :
AddHandler
et son pendant
RemoveHandler (pas sur, ce soir, c'est pas la forme :) )

Mon site
Messages postés
16
Date d'inscription
jeudi 27 janvier 2005
Statut
Membre
Dernière intervention
25 mars 2010

bonjour,

je pense que l'erreur n'est pas dans cette ligne
AddHandler champ.KeyPress, AddressOf changerletexte
mais dans celle là

Private Sub changerletexte(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
je ne suis pas sure
merci bien pour ton aide
Messages postés
16
Date d'inscription
jeudi 27 janvier 2005
Statut
Membre
Dernière intervention
25 mars 2010

rebonjour,

j'ai trouvé mon erreur, mais je trouve un autre problemme!
dans la suppression des champs
je vous remercie en avance

Public Class Form1
Dim i As Integer

Dim macollection As New Collection
Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim champ As New TextBox

i = i + 1

champ.Name = "tot" & Str(i)
Me.Controls.Add(champ)
macollection.Add(champ)

champ.Top = 30 * i
champ.Left = 100
champ.Width = 400
champ.Height = 20

macollection(i).Text = "voila je suis numero" & Str(i) & Chr(32) & macollection(i).Left & Chr(32) & macollection(i).Top
AddHandler champ.KeyPress, AddressOf changerletexte

End Sub

Private Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim l As Integer
For l = 1 To macollection.Count
If l = macollection.Count Then
macollection(l).dispose()
MsgBox(l)
'issi je trouve que l = i!
'meme après la suppression du dernier champ!
'pour quoi il y a un champ dans l'index qui reste vide?
'comment je peux supprimer le dernier champ de l'index à chaque fois en cliquant sur ce bouton?
End If
Next

End Sub

Private Sub changerletexte(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
Dim k As Integer

For k = 1 To macollection.Count
If macollection(k).name = sender.name Then
msgbox(macollection(k).text)
End If
Next

End Sub

End Class
Messages postés
16
Date d'inscription
jeudi 27 janvier 2005
Statut
Membre
Dernière intervention
25 mars 2010

bonjour,

auqune réponse?
cordialement
Messages postés
14774
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
7 mars 2021
151
Bonjour,

Pour supprimer un controle, le Disposer ne suffit pas :

macollection(l).dispose()
me.controls.remove(macollection(l))
macollection.removeat(l)

(syntaxe à revérifiée, mais ça devrait être bon)

Penses aussi à retirer les handlers que tu as ajoutée (RemoveHandler)

Mon site
Messages postés
16
Date d'inscription
jeudi 27 janvier 2005
Statut
Membre
Dernière intervention
25 mars 2010

bonjour,

ca marche
je te remercie bien pour ton aide.
cordialement