Drag & Drop [Résolu]

Messages postés
32
Date d'inscription
jeudi 5 juin 2008
Dernière intervention
11 février 2010
- - Dernière réponse : Jleherpeur
Messages postés
32
Date d'inscription
jeudi 5 juin 2008
Dernière intervention
11 février 2010
- 5 juin 2008 à 11:30
Bonjour,
Je suis entrain de créer une class pour faire du Drag&Drop sur des Control.

J'ai un probleme ici: c.Parent.MousePosition
Comment faire pour recuperer cette valeur?

Sinon Le code marche très bien directement dans un formulaire.

Voici mon code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;

namespace dragdrop {
    class dragDrop {

        Control control;
        bool Dragging;
        int mouseX, mouseY;
        int clipLeft, clipTop, clipWidth, clipHeight;

        public dragDrop(Control c){
            this.control = c;
            c.MouseDown += new MouseEventHandler(c_MouseDown);
            c.MouseMove += new MouseEventHandler(c_MouseMove);
            c.MouseUp += new MouseEventHandler(c_MouseUp);
        }

        void c_MouseUp(object sender, MouseEventArgs e) {
            if (Dragging) {
                Dragging = false;
                Cursor.Clip = System.Drawing.Rectangle.Empty;
                control.Invalidate();
            }
        }

        void c_MouseMove(object sender, MouseEventArgs e) {
            Control c = (Control)sender;
            if (Dragging) {
                Point nextPosition = new Point();
                nextPosition = c.Parent.PointToClient(c.Parent.MousePosition);
                nextPosition.Offset(mouseX, mouseY);
                control.Location = nextPosition;
            }
        }

        void c_MouseDown(object sender, MouseEventArgs e) {
            Control c = (Control)sender;
            if (e.Button == MouseButtons.Left) {
                Dragging = true;
                mouseX = -e.X;
                mouseY = -e.Y;
                clipLeft = c.Parent.PointToClient(c.Parent.MousePosition).X - control.Location.X;
                clipTop = c.Parent.PointToClient(c.Parent.MousePosition).Y - control.Location.Y;
                clipWidth = c.Parent.ClientSize.Width - (control.Width - clipLeft);
                clipHeight = c.Parent.ClientSize.Height - (control.Height - clipTop);
                Cursor.Clip = c.Parent.RectangleToScreen(new Rectangle(clipLeft, clipTop, clipWidth, clipHeight));
                control.Invalidate();
            }
        }
   }
}
Afficher la suite 

Votre réponse

1 réponse

Meilleure réponse
Messages postés
32
Date d'inscription
jeudi 5 juin 2008
Dernière intervention
11 février 2010
3
Merci
Désolé pour le dérangement, mais j'ai trouve ;)

Enfait j'ai remplacé
c.Parent par Form

A bientot

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 98 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Jleherpeur

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.