Les evenements des controles en dinamique

maanaloun Messages postés 16 Date d'inscription jeudi 27 janvier 2005 Statut Membre Dernière intervention 25 mars 2010 - 23 mars 2010 à 22:09
maanaloun Messages postés 16 Date d'inscription jeudi 27 janvier 2005 Statut Membre Dernière intervention 25 mars 2010 - 25 mars 2010 à 11:53
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

NHenry Messages postés 15000 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 27 septembre 2022 158
23 mars 2010 à 22:32
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
0
maanaloun Messages postés 16 Date d'inscription jeudi 27 janvier 2005 Statut Membre Dernière intervention 25 mars 2010
23 mars 2010 à 22:43
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
0
maanaloun Messages postés 16 Date d'inscription jeudi 27 janvier 2005 Statut Membre Dernière intervention 25 mars 2010
24 mars 2010 à 00:38
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
0
maanaloun Messages postés 16 Date d'inscription jeudi 27 janvier 2005 Statut Membre Dernière intervention 25 mars 2010
24 mars 2010 à 09:52
bonjour,

auqune réponse?
cordialement
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
NHenry Messages postés 15000 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 27 septembre 2022 158
24 mars 2010 à 14:39
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
0
maanaloun Messages postés 16 Date d'inscription jeudi 27 janvier 2005 Statut Membre Dernière intervention 25 mars 2010
25 mars 2010 à 11:53
bonjour,

ca marche
je te remercie bien pour ton aide.
cordialement
0