Redirection d'events VB Dot Net 2008

Résolu
cs_ABF Messages postés 227 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 26 avril 2012 - 18 mai 2009 à 14:55
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 - 18 mai 2009 à 22:17
Bonjour,

J'ai un usercontrol perso (un label en titre et le control lui même) qui doit être générique (donc dans un tableau)
Lorsque je créer dynamiquement mon contrôle, il s'affiche bien.
Ensuite je suis définit les events via :

AddHandler tUC(tUC.Length - 1).MouseMove, AddressOf tUC_MouseMove


De même pour MouseDown et MouseUp.
Ensuite pour le label de mon controle, je fais de même avec :

AddHandler tUC(tUC.Length - 1).lblTitre.MouseMove, AddressOf tUC_MouseMove

Le but est de pouvoir déplacer tout mes contrôles de type UC dans mon form.
Lorsque je déplace le UC lui même ça fonctionne mais lorsque je bouge le label, c'est le label qui bouge dans le UC et non le UC !

Comment faire s'il vous plait.

Merci

9 réponses

Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
18 mai 2009 à 21:06
Re,

Voila un petit exemple de code :

crée une nouvelle application windows, dans celle-ci crée un usercontrol et place un label dedans en mode desin, en suite dans le code behind de l'usercontrol place ce code :

Public Class UC
Dim InitLocation As Point
Private Sub UC_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
InitLocation.X = e.Location.X
InitLocation.Y = e.Location.Y
End Sub
Private Sub UC_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
If e.Button = Windows.Forms.MouseButtons.Left Then
Dim NewLoc As New Point
NewLoc.X = Me.Location.X + (e.X - InitLocation.X)
NewLoc.Y = Me.Location.Y + (e.Y - InitLocation.Y)
Me.Location = NewLoc
End If
End Sub
Private Sub Label1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Label1.MouseDown
Call UC_MouseDown(sender, e)
End Sub
Private Sub Label1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Label1.MouseMove
Call UC_MouseMove(sender, e)
End Sub
Private Sub UC_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
End Class

Dans la form du projet place ce code :

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim UCArray() As UC
ReDim UCArray(0)
UCArray(0) = New UC
UCArray(0).Location = New Point(15, 15)
UCArray(0).Size = New Size(150, 150)
UCArray(0).BackColor = Color.AliceBlue
Me.Controls.Add(UCArray(0))
End Sub

Et voila, je pense que c'est ce que tu veux obtenir si je ne me trompe pas ;)

@+ et tiens moi au ju !
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
18 mai 2009 à 16:02
Bonjour,

Lorsque je déplace le UC lui même ça fonctionne mais lorsque je bouge le label, c'est le label qui bouge dans le UC et non le UC !  <== est ce que tu t'es relu avant de poster ??
cs_ABF Messages postés 227 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 26 avril 2012
18 mai 2009 à 16:14
Oui tout a fait, c'est toi qui n'a pas compris ou peut être me suis je mal fait comprendre :D

Déplacement du container de L'UC : OK, l'UC se déplace
Déplacement du label dans l'UC : Label qui se déplace et non le contrôle

As tu une idée pour résoudre ce problème ?
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
18 mai 2009 à 19:57
Salut,

Bien si tu déplace ton label, c'est normal qu'il se déplace ? je ne vois pas ou est le problème, si tu veux déplacer ton contrôle déplace le contrôle...

Ou si tu veux dire par la que ton label se déplace en dehors de ton contrôle (sur ta feuille mais pas dans ton usercontrol) c'est que celui-ci n'est pas un control conteneur,
dans ce cas ajoute Inherits System.Windows.Forms.ContainerControl, dans ta classe, et valide la changement si un message d'erreur apparaît.

@+ Mayzz.

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

Posez votre question
cs_ABF Messages postés 227 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 26 avril 2012
18 mai 2009 à 20:04
Salut Hihi,

Non en fait mon problème est que je veux, lorsque je clic sur mon label, déplacer le control entier avec le label. Comme si mon label était figé et que tout le control ainsi que le contenu bouge lors du déplacement (d'ou le labelTitre) :D

j'espère que l'on se comprend hihi !

Merci ++
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
18 mai 2009 à 20:19
Ah ok, la c'est déja plus claire, tu déplace ton contrôle à partir des évenement mousemove, pourquoi tu ne gère pas les évenements directement depuis l'usercontrol au lieu d'ajouter des délégué ? cela ne t'empeche pas de créer ton contrôle dynamiquement, cela automatisera juste tes déplacement ??? Puis cela te permettera de gérer séparément les procédure MouseMove, du contrôle et du label...
cs_ABF Messages postés 227 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 26 avril 2012
18 mai 2009 à 20:21
;) on s'est enfin compris haha.

Et bien pour ta solution je suis complètement d'accord mais je migre tout juste de VB6 à Dot net et donc je ne sais pas faire d'ou cette pseudo solution.
Pourrais tu m'aiguiller pour ce code s'il te plais.

Merci
cs_ABF Messages postés 227 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 26 avril 2012
18 mai 2009 à 21:42
Y'a Bon : c'est parfaitement ce que je voulais :D MERCI

En fait je suis sur un gros projet et je dois faire ces controles, les déplacer et offrir un espace de travail large (gestion avec des scrolls de mon containers)
Voilà.

Si tu as des sources similaire sur vbFrance, des idées de gestion.... fais signe

Encore merci a toi c'est au poil !
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
18 mai 2009 à 22:17
Parfait si j'ai pu t'aider, n'oublis pas le bouton réponse accepté ;)
Rejoignez-nous