alligo
Messages postés38Date d'inscriptionmercredi 31 mai 2006StatutMembreDernière intervention 9 novembre 2009
-
21 oct. 2008 à 00:03
gillardg
Messages postés3275Date d'inscriptionjeudi 3 avril 2008StatutMembreDernière intervention14 septembre 2014
-
21 oct. 2008 à 17:01
Bonjour a tous
j'ai créé un controle utilisateur (controle 1) (herité d'un bouton dont j'ai changé la forme). comme j'ai besoin d'enormement de ces controles, j'ai fait un autre controle utilisateur (controle 2) qui les regroupe tous.
dans le controle 2 je genere dynamiquement dans un tableau mes controles 1.
Je crée donc une form qui contient le controle 2. les controles 1 s'affichent corretement, et les evenements des controles 1 sont bien pris en charge
quand je clique sur un des controles 1 je declenche l'evenement surchargé de controle 1 mais le probleme est que dans la form qui utilise le controle 2 (et donc les controles 1) je voudrais recuperer l'index de mon tableau de controle pour savoir sur quel controle 1 j'ai cliqué
alligo
Messages postés38Date d'inscriptionmercredi 31 mai 2006StatutMembreDernière intervention 9 novembre 2009 21 oct. 2008 à 14:06
Voila j'ai trouvé
je trouve ca un peu tiré par les cheveux mais ca marche ...
dans controle2 j'utilise la methode load pour charger mes controles1 et j'abonne mon controle2 a chaque evenement click de controle1 ...
dans la methode abonnée de controle2 je ets a jour une propriete de on controle2 avec l'index de controle1 a l'aide du sender et je lance un evenement ici onclick() mais ca pourrait etre n'importe lequel qui est surchargé et se charge de rendre dispo a la form mon index
code de control2 :
Private Sub GroupedControl_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim i As Integer
For i = 0 To 10
myarray(i) = New Controls_Test.RoundButton(i)
myarray(i).Visible = True
Me.coord0 += Me.shiftl
myarray(i).Location = Me.coord0
myarray(i).Numero = i
Me.Controls.Add(myarray(i))
AddHandler myarray(i).Click, AddressOf myarray_click
Next
Me.Refresh()
End Sub
Private Sub myarray_click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Me.lala = sender.numero
Me.OnClick(e)
End Sub
pfiou c'etait pas simple ca je trouve ...
merci pour l'aide et merci d'avance pour les correrctions a faire si il y en a ...
alligo
Messages postés38Date d'inscriptionmercredi 31 mai 2006StatutMembreDernière intervention 9 novembre 2009 21 oct. 2008 à 10:44
Oui d'accord, c'est un peu ce que j'avais deja fait mais ...
voici la portion de code pour la declaration du tableau :
For i = 0 To 10
myarray(i) = New Controls_Test.RoundButton(i)
myarray(i).Visible = True
Me.coord0 += Me.shiftl
myarray(i).Location = Me.coord0
Me.Controls.Add(myarray(i))
Next
Je n'arrive pas a comprendre quel evenement est levé quand je clique sur des controles de mon tableau.
un truc du style myarray(i)_click ... mais je ne peux pas utiliser de i dans la declaration de variable.
une deuxieme solution serait de regarder quelle proprieté a changé dans mon tableau en les regardant les controles un par un ... mais je trouve ca moyen et le refresh ne fonctionne pas ex
For i
0 To 10
If myarray(i).isHighlighted = True Then
lala = myarray(i).Numero 'lala est une propriete de ma classe
Exit For
End If
Next
et encore je ne sais pas sur quel evenement de controle2 mettre cette portion de code car ne fonctionne pas sur click
Vous n’avez pas trouvé la réponse que vous recherchez ?
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 21 oct. 2008 à 12:57
aucun rapport avec ta question de départ donc, ou alors je n'ai pas compris....
c'est "sender" qui doit te renvoyé les informations du bouton cliqué
voir les sources existantes pour savoir comment gérer les évènements sur des contrôles dynamiques
seulement une fois chose faite, tu pourras t'occuper du parent (controle2)
++
<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
gillardg
Messages postés3275Date d'inscriptionjeudi 3 avril 2008StatutMembreDernière intervention14 septembre 20142 21 oct. 2008 à 14:46
Bonjour,
normalement tes control1 ont bien un evenement click??
si oui il suffit de tous les gerer dans une sub
sub MesControls1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)handles ctrr1.click ; ctr2.click ' et ainsi de suite
MyCtrIndex=sender.numero
End Sub
je ne sais pas si mon explication est claire pour toi mais voici un exemple avec des boutons
alligo
Messages postés38Date d'inscriptionmercredi 31 mai 2006StatutMembreDernière intervention 9 novembre 2009 21 oct. 2008 à 15:54
Ta solution est interessante mais ... je peux avoir jusqu'a 400 controles ... dans ce cas je perds tout avantage de la prog si je dois taper a la main le nom de mes 400 controles?