Drag & Drop [Résolu]

Jleherpeur 32 Messages postés jeudi 5 juin 2008Date d'inscription 11 février 2010 Dernière intervention - 5 juin 2008 à 11:25 - Dernière réponse : Jleherpeur 32 Messages postés jeudi 5 juin 2008Date d'inscription 11 février 2010 Dernière intervention
- 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
Jleherpeur 32 Messages postés jeudi 5 juin 2008Date d'inscription 11 février 2010 Dernière intervention - 5 juin 2008 à 11:30
3
Merci
Désolé pour le dérangement, mais j'ai trouve ;)

Enfait j'ai remplacé
c.Parent par Form

A bientot

Merci Jleherpeur 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes 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.