Redirection d'events VB Dot Net 2008

[Résolu]
Signaler
Messages postés
227
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
26 avril 2012
-
Messages postés
2813
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
-
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

Messages postés
2813
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
38
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 !
Messages postés
2813
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
38
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 ??
Messages postés
227
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
26 avril 2012

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 ?
Messages postés
2813
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
38
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.
Messages postés
227
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
26 avril 2012

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 ++
Messages postés
2813
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
38
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...
Messages postés
227
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
26 avril 2012

;) 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
Messages postés
227
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
26 avril 2012

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 !
Messages postés
2813
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
38
Parfait si j'ai pu t'aider, n'oublis pas le bouton réponse accepté ;)