diablosv
Messages postés120Date d'inscriptiondimanche 22 octobre 2000StatutMembreDernière intervention26 février 2014
-
9 déc. 2013 à 11:58
diablosv
Messages postés120Date d'inscriptiondimanche 22 octobre 2000StatutMembreDernière intervention26 février 2014
-
9 déc. 2013 à 15:41
Bonjour,
voila j'ai crée un usercontrol contenant plusieurs élément. Je souhaiterais maintenant, comme je le fait avec un control Bouton ou autre en utilisant l'événement MouseMove, le déplacer en cliquant dessus.
Le problème c'est qu'il faut que je clic exactement sur la form du control.
Comment faire pour affecter les valeurs de position au usercontrol en cliquant n'importe ou sur l'objet.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018212 9 déc. 2013 à 13:13
Bonjour,
Et par quel "biais" comptes-tu faire comprendre que c'est tel contrôle et non tel autre contrôle que tu veux déplacer sur ton usercontrrol ?
Question idiote, que je pose là ?
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201578 9 déc. 2013 à 13:32
Salut Diablosv et un grand bonjour à Ucfoutu
Ton UserControl est un objet comme les autres.
Il a donc les propriétés Mouse_Click, Mouse_Move (lues depuis la forme qui héberge le contrôle).
Le code de déplacement sera donc placé dans cette forme.
Il te suffit donc de rechercher comment déplacer un objet et tu l'appliques à ton contrôle.
De mémoire, il te faut :
- Dans la partie "Déclarations" de ta forme, tu dimensionnes :
- 2 Long pour mémoriser les positions init_x et init_y du clic initial
- 1 booléen pour mémoriser qu'un déplacement est en cours
- Dans _MouseDown de ton contrôle, si le booléen est à False, tu mémorises la position init_x et init_y (fournie dans les paramètres de la Sub) et tu mets ton booléen à True
- Dans _MouseMove, si le booléen est à True, tu gères le déplacement de l'objet (Move) par calcul en utilisant le init_x et init_y mémorisé et le x-y fourni par la Sub
- Dans _MouseUp de ton contrôle, si le booléen est à True, tu le remets à False
Il y a des exemples parmi les sources.
NHenry
Messages postés15083Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention19 septembre 2023159 9 déc. 2013 à 13:37
(détail)
"2 Long pour mémoriser les positions init_x et init_y du clic initial "
Si c'est en .NET, les Integer sont les Long de VB6.
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201578 9 déc. 2013 à 13:52
lol, tu as raison.
Chasser le naturel, il revient au galop.
Merci
Bonjour
merci pour vos reponse.
En fait le deplacement n'est pas un probleme
pour les autres control je fais comme ca :
' Dans le mouseDown je recupere le control et sa position
Private Sub ChampsMouseDownHandler(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
' dans le mouse move j'affecte les nouvelles valeur en dynamique
ce qui a pour effet de garder l'objet coller a la souris durant le deplacement
Private Sub ChampsMouseMoveHandler(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
If e.Button = Windows.Forms.MouseButtons.Right Then
If G_DisplayItem_Dict(Txt.Parent.Name).Numeriques(Txt.Name).Locked = False Then
sur le usercontrol j'ai plusieurs objet, un label, un textbox un ovalshape. Pour pouvoir le deplacer il faut absolument que je clic sur une partie du usercontrol. Si je clic sur le label ben ca marche pas. je voulais savoir si il etait possible de dire qd on clic sur un des objets du usercontrol tu passe l'evenement clic au usercontrol.
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201578 Modifié par cs_Jack le 9/12/2013 à 14:36
Je pense que oui.
Ma réponse, il est vrai, était plutôt issue des techniques VB6.
En .Net, il doit suffire d'associer le Handle de l'évènement du Label à celui du control, genre
Private Sub monControl_MouseMachin(Params) _ Handle monControl.MouseMachin, _ monLabel.MouseMachin, _ monOvalShape.MouseMachin
A tester, je n'ai pas de UserControl sous la main pour tester
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201578 9 déc. 2013 à 14:41
Ah bah oui mais non.
Les objets ne sont pas au même niveau ...
Epineux problème.
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201578 9 déc. 2013 à 14:44
lol, je ne sais même pas comment faire pour placer un UC sur une forme ... je sèche
diablosv
Messages postés120Date d'inscriptiondimanche 22 octobre 2000StatutMembreDernière intervention26 février 2014 9 déc. 2013 à 15:41
c'est bon ca marche
tu m'as mi sur une piste ca marche
diablosv
Messages postés120Date d'inscriptiondimanche 22 octobre 2000StatutMembreDernière intervention26 février 2014 9 déc. 2013 à 14:39
salut cs_Jack
tu veut dire d'essayer de faire pointer tous les événements vers 1 seul ?
Je vais tester ça de suite et je te dirait si cela marche
merci pour la piste a suivre