Bonjour, je débute sous C" et je vourais savoir comment faire pour retrouver un Panel lorsque l'on dispose de ses coordonnées X et Y.
Merci
Bonjour, je débute sous C" et je vourais savoir comment faire pour retrouver un Panel lorsque l'on dispose de ses coordonnées X et Y.
Merci
Bonjour,
Qu'est ce que tu entends par "retrouver" ton panel ?? Le retrouver dans la liste des contrôles ?
Si c'est ça, utilise la méthode GetChildAtPoint(new point(x,y)); de ton formulaire.
D'accord, merci, j'ai un autre petit problème, c'est que je ne réussis pas à retrouver les coordonnées du sender d'un évenement lorsque je veux redéfinir le DragEnter et le DragAndDrop d'un Control dérivé de Panel,...
J'ai donc le code suivant :
Seulement je me rends compte maintenant que les coordonnées x et y obtenues sont celles du point ou j'ai déposé le Panel, et donc, quand je fais : form.GetChildAtPoint(pt); tout ce que j'obtiens c'est le panel de réception, et non pas celui que je drag,...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 protected override void OnDragDrop(DragEventArgs drgevent) { int x, y; x = drgevent.X; y = drgevent.Y; Point pt=new Point(x,y); Form form_above = base.FindForm(); Control ctrl=form_above.GetChildAtPoint(pt); //mais ici j'obtiens le mauvais controle Panel pan = (Panel)ctrl; Ticket tic = (Ticket)pan; this.Add((Ticket)tic); base.OnDragDrop(drgevent); }
Et là, je ne sais pas comment faire pour retrouver les coordonnées non pas de l'objet récepteur, mais du sender !
J'espère que c'est compréhensible,...
Bonjour,
Au lieu de passer par une surcharge de ta méthode essaies d'utiliser l'évent DragDrop où tu as bien l'objet sender
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 private void monobjet_DragDrop(object sender, System.Windows.Forms.DragEventArgs e) { }
Merci,
J'ai essayé de redéfinir dans ma classe Planning la fonction:
Mais je ne rentre jamais dedans, je ne comprends pas pourquoi, et pourtant, je rentre dans la fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 private void Planning_DragDrop(object sender, System.Windows.Forms.DragEventArgs e) { nbrTicket = 5; //ici point d'arrêt, juste pour voir si ça rentre dedans }
Mais là, je n'ai pas l'objet sender !!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part protected override void OnDragDrop(DragEventArgs drgevent)
Je ne sais plus quoi faire !!!
Ok, j'ai compris ce que tu voulais dire à propos de la redéfinition du :
Seulement, le problème, c'est que je voudrais réussir à faire une classe dans laquelle ce comportement soit toujours le même, de manière à n'avoir pas à le recoder à chaque fois, et c'est là que ça coince, parceque, si cette fonction dépend de la form dans laquelle je me trouve, j'ai l'objet sender, mais je dois la redéfinir à chaque fois, tandis que si je redéfinis la méthode :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 private void Planning_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
Je ne réussis pas à accéder à mon objet dragué
Code : Sélectionner tout - Visualiser dans une fenêtre à part protected override void OnDragDrop(DragEventArgs drgevent)
Si quelqu'un à une idée, surtout qu'il n'hésite pas, parce que moi c'est vide !
Bonjour,
Les drag & drop, j'en ai pas fait beaucoup... ça reste très flou pour moi
[En se passant la corde autour du cou]
Quelqu'un d'autre saurait comment faire pour obtenir l'objet passé dragué avec la fonction
?
Code : Sélectionner tout - Visualiser dans une fenêtre à part protected override void OnDragDrop(DragEventArgs drgevent)
PS: merci quand même debug
Bon, là je pense que j'ai trouvé une réponse qui me paraît bonne, je récupère l'objet directement dans la fonction :
En faisant ça, j'ai l'impression que ça marche en tout cas !!! (en attendant de voir que en fait, il y a un gros problème,...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 protected override void OnDragDrop(DragEventArgs drgevent) { object tp = drgevent.Data.GetData((drgevent.Data.GetFormats())[0]); if ( String.Equals( (drgevent.Data.GetFormats())[0],"nom_projet.nom_composant" )) { try { nom_composant tick = (nom_composant)tp; int i = 5; this.Add(tick); } catch (Exception ex) { int j = 5; } } }
Merci encore
Pour une méthode :abonnée à l'event DragDrop d'un Controle c, l'objet sender est c. Plus généralement, toutes les méthodes abonnées aux events du framwork sont de la form void truc(object sender, xxxEventArgs e), où "sender", comme son nom l'indique, est l'objet qui a émis l'événement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part private void Planning_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
La fonction OnDragDrop correspondante est protégée, dans la classe Control ; le paramètre "object sender" ne sert à rien, parce qu'il vaut toujours "this".
Donc, comme tu t'en es rendu compte tout seul (), l'objet dragué est dans l'EventArgs.
Certes, merci pour la précision, mais, j'ai mis du temps à me rendre compte que le sender était égal à this !!!
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager