IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Déplacer un control


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Par défaut Déplacer un control
    Bonjour!
    je développe une application et l'utilisateur sera amené à déplacer un control(un bouton par exemple) pour cetaines raisons!
    il clique (appuie long) sur le bouton et le deplace jusqu'a la position souhaitée puis relache le bouton! je dois alors lui afficher le bouton là!
    j'ai pensé a recuperer la position de la souris et a les passer a mon controle pour l'afficher!
    le probleme, je sais pas à quel événement m'abonner pour savoir kil a cliqué (appuie long) et comment recuperer la position de la souris
    Merci de m'aider

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    Salut

    pour les event, MouseDown (dans l'argument passé, tu as la position de la souris)

    Pour le deplacement, MouseMove (tu as l'état du bouton dans l'argument passé sinon, tu peux avoir ton propre flag disant si on peut bouger ou pas le bouton)

    La propriété à modifier : Location

    Et pour l'appui long, tu peux armer un timer sur le MouseDown... (sur le mouseUp, tu arretes ce timer eventuellement)
    et quand le timer a atteind son delai, il te positionne un flag autorisant un tel deplacement

    Voila

    Est-ce clair ?

    The Monz, Toulouse

  3. #3
    Membre très actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Par défaut
    Je mets en application tout ca et je te donne des nouvelles
    merci pour la reponse

  4. #4
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    En gros, le code ca donne cela

    J'ai crée un user Control héritant du bouton

    (ca vaut ce que ca vaut, mais bon, c'est fait rapidemment)

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Drawing;
    using System.Data;
    using System.Text;
    using System.Windows.Forms;
     
    namespace MouseMoveBtn
    {
        public partial class MovableBtn : Button
        {
     
            private bool allowMove;
     
            private Timer timer = new Timer();
            private Point refPoint = new Point();
     
            [DefaultValue(true)]
            public bool AllowMove
            {
                get { return allowMove; }
                set { allowMove = value; }
            }
     
            private bool canMove = false;
     
            public MovableBtn()
            {
                InitializeComponent();
                timer.Tick += new EventHandler(timer_Tick);
                timer.Interval = 2000;
            }
     
            protected override void OnMouseMove(MouseEventArgs mevent)
            {
                base.OnMouseMove(mevent);
                if (mevent.Button == MouseButtons.Left)
                {
                    if (canMove)
                    {
                        int deltaX = MousePosition.X - refPoint.X;
                        int deltaY = MousePosition.Y - refPoint.Y;
                        Location = new Point(Location.X + deltaX, Location.Y + deltaY);
                        refPoint = MousePosition;
                    }
                    else
                    {
                        timer.Stop();
                        timer.Start();
                    }
                }
            }
     
            void timer_Tick(object sender, EventArgs e)
            {
                timer.Stop();
                canMove = true;
                Cursor.Current = Cursors.Cross;
                refPoint = MousePosition;
            }
     
            protected override void OnMouseDown(MouseEventArgs mevent)
            {
                base.OnMouseDown(mevent);
                timer.Start();
            }
     
            protected override void OnMouseUp(MouseEventArgs mevent)
            {
                base.OnMouseUp(mevent);
                canMove = false;
                Cursor.Current = Cursors.Hand;
                timer.Stop();
            }
        }
    }
    The Monz, Toulouse

Discussions similaires

  1. [AC-2003] Déplacer des controles dans un état: quand et comment?
    Par yupyupxav dans le forum IHM
    Réponses: 6
    Dernier message: 11/06/2009, 22h38
  2. Déplacer des controles - C#
    Par Evildoer_62 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 11/12/2008, 09h59
  3. Déplacer un Controle d'un USF dans une cellule de la feuille
    Par melouille56 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 18/09/2007, 19h21
  4. déplacer un controle en le glissant
    Par mouchkar dans le forum ASP.NET
    Réponses: 6
    Dernier message: 29/03/2007, 08h01
  5. [VB.Net][VS2003]Déplacer un controle dynamiquement.
    Par Nico-xs dans le forum Windows Forms
    Réponses: 4
    Dernier message: 21/07/2006, 22h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo