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

Windows Forms Discussion :

[C#] Déplacer un composant avec la souris


Sujet :

Windows Forms

  1. #1
    Membre du Club

    Inscrit en
    Juin 2003
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 64
    Points : 66
    Points
    66
    Par défaut [C#] Déplacer un composant avec la souris
    Bonjour,

    J'essaye de déplacer plusieurs composants mais avec la souris.
    C'est à dire seulement quand le clique est enfoncé, il serait possible de déplacer le control.
    Pour être plus précis j'utilise un PictureBox.

    Déjà est- ce possible?
    Est ce que quelqu'un pourrait soit me diriger vers des exemples soit me conseiller?

    Merci d'avance
    if ( toi == "répondre à moi")
    {
    moi = "";
    }
    Débutant mais futur Pro...

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Salut !

    oui, je pense que c'est possible : tu fais un évenement onMouseDown, où tu repère la position de la souris, puis un onMouseUp où tu détectes la nouvelle position, tu fais la différence des deux positions, puis tu déplace ta PictureBox en conséquence...

    Je vais essayer de voir si je ne peux pas te trouver un bout de code...

    Bon courage !!!
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 38
    Points : 37
    Points
    37
    Par défaut
    le probleme c'est que tu verra pas ton composant se deplacer en faisant simplement comme ca. Il se deplacera uniquement quand tu aura lacher le clic, lors de l'evenement onMouseUp.
    Mais...Mais... C'est quoi ce bordel !!!
    j'etais a la recherche d'ecole en info. Mais je n'ai rien trouvé de tres concluant alors je sais po quoi faire... J'ai un DUT info et bcp d'ambitions...Vous auriez po un ptit boulot

  4. #4
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    il y a aussi possibilité de faire le déplacement avec les onMousMouve...
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  5. #5
    Membre du Club

    Inscrit en
    Juin 2003
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 64
    Points : 66
    Points
    66
    Par défaut
    Je vais essayer cette méthode...
    Je vais continuer quand même à chercher un bout de code

    Je vois pas comment je pourrai faire pour déplacer le composant en temps réel (ou même si c'est avec un cadre pour aléger).
    Sinon faudrai faire afficher à chaque fois que la location change et faire un rafraichissement (invalidade)

    je vais continuer mes recherches si quelqu'un à encore des idées je suis preneur

    merci
    if ( toi == "répondre à moi")
    {
    moi = "";
    }
    Débutant mais futur Pro...

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Août 2002
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 83
    Points : 107
    Points
    107
    Par défaut
    Salut,

    pour déplacer un composant avec la souris, une solution
    est d'utiliser les API windows

    Ex : Déplacement du panel panel1

    Déclaration :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    using System.Runtime.InteropServices;
     
    private const int HTCAPTION = 0x2;
    private const int WM_NCLBUTTONDOWN = 0xA1;
     
    [DllImport("User32.dll")] 
    public static extern bool ReleaseCapture(); 
     
    [DllImport("User32.dll")] 
    public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
    Sur événement MouseDown du panel1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    private void panel1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
    {
         if (e.Button == MouseButtons.Left) 
         { 
             ReleaseCapture(); 
            SendMessage(this.panel1.Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0); 
          } 
     
    }

  7. #7
    Membre du Club

    Inscrit en
    Juin 2003
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 64
    Points : 66
    Points
    66
    Par défaut
    Sa fonctionne niquel c'est super.
    Merci beaucoup
    if ( toi == "répondre à moi")
    {
    moi = "";
    }
    Débutant mais futur Pro...

  8. #8
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mai 2006
    Messages : 27
    Points : 29
    Points
    29
    Par défaut
    Ca marche impeccablement bien.

    Mais, comment faire pour déplacer de la même manière un controle utilisateur ?
    Ceci ne marche visiblement que pour les panels.

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par nostradamus Voir le message
    Salut,

    pour déplacer un composant avec la souris, une solution
    est d'utiliser les API windows
    ...
    ReleaseCapture();
    SendMessage(this.panel1.Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);
    ...
    [/code]
    et avec tout type de contrôle merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. déplacer un objet avec la souris
    Par pingpong dans le forum OpenGL
    Réponses: 4
    Dernier message: 24/10/2007, 01h54
  2. Déplacer un panel avec la souris
    Par Harry dans le forum Delphi
    Réponses: 14
    Dernier message: 05/06/2006, 19h18
  3. [C++.net]Déplacer un Panel avec la souris
    Par Dlyan dans le forum MFC
    Réponses: 28
    Dernier message: 03/03/2006, 15h36
  4. Déplacer une TImage avec la souris
    Par Ingelishome dans le forum C++Builder
    Réponses: 2
    Dernier message: 18/03/2005, 14h16

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