Forms Deplacement OnMouse

Résolu
HACKANDROID Messages postés 103 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 3 janvier 2013 - 13 juil. 2012 à 23:29
HACKANDROID Messages postés 103 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 3 janvier 2013 - 15 juil. 2012 à 23:52
Bonjour,

Je vais passer pour un kikoo mais je n'arrive pas ce code : http://msdn.microsoft.com/fr-fr/library/6k15y9et.aspx

Voici le code j'ai tenter (Form1.cs) :

 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Launcher_2____Type_1_
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

// [...]

private void Form1_MouseDown(object sender,
    System.Windows.Forms.MouseEventArgs e)
        {
            int xOffset;
    int yOffset;

    if (e.Button == MouseButtons.Left)
    {
        xOffset = -e.X - SystemInformation.FrameBorderSize.Width;
        yOffset = -e.Y - SystemInformation.CaptionHeight -
            SystemInformation.FrameBorderSize.Height;
        isMouseDown = true;
        this.MouseDown += new
   System.Windows.Forms.MouseEventHandler
   (this.Form1_MouseDown);
    }
        }

        private void Form1_MouseMove(object sender,
    System.Windows.Forms.MouseEventArgs e)
        {
            if (isMouseDown)
            {
                Point mousePos = Control.MousePosition;
                Location = mousePos;
                this.MouseMove += new
   System.Windows.Forms.MouseEventHandler
   (this.Form1_MouseMove);
            }
        }

        private void Form1_MouseUp(object sender,
            System.Windows.Forms.MouseEventArgs e)
        {
            // Changes the isMouseDown field so that the form does
            // not move unless the user is pressing the left mouse button.
            if (e.Button == MouseButtons.Left)
            {
                isMouseDown = false;
                this.MouseUp += new
   System.Windows.Forms.MouseEventHandler
   (this.Form1_MouseUp);
            }
        }

        public Point mouseOffset { get; set; }

        public bool isMouseDown { get; set; }
    }
}


Ce que j'ai du mal a comprendre c'est où l'on place les codes si quelqu'un peu m'expliquer sa serais super !

Merci d'avance

Ps. Le bouton Close je sais faire ce qui m'intéresse c'est le déplacement de la fenêtre sans la barre en haut


Konichiwa (:

Ma page Facebook Spécial Chat

6 réponses

cs_thebigboss Messages postés 216 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 12 avril 2017 2
14 juil. 2012 à 00:03
En fait tu as une variable de type bool qui s'appelle isMouseDown.
Quand tu fais un clique gauche (MouseDown) cette variable est mise à true et la position initiale de la fenêtre est sauvegardée :
if (e.Button == MouseButtons.Left)
    {
        xOffset = -e.X - SystemInformation.FrameBorderSize.Width;
        yOffset = -e.Y - SystemInformation.CaptionHeight -
            SystemInformation.FrameBorderSize.Height;
        isMouseDown = true;


Ensuite si tu déplaces la souris (MouseMove)la position de la fenêtre change par rapport à la position de départ:
if (isMouseDown)
            {
                Point mousePos = Control.MousePosition;
                Location = mousePos;


Et enfin quand tu relaches le clique (MouseUp) la variable est remise à false et le déplacement de la souris ne déplacera plus la fenêtre:
if (e.Button == MouseButtons.Left)
            {
                isMouseDown = false;


J'espère avoir répondu à ta question

A+

*******************************************
SharpDevelop est mon ami! CSharpFR.com aussi!!!!!!!!!
3
cs_thebigboss Messages postés 216 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 12 avril 2017 2
14 juil. 2012 à 19:16
Ne marche pas? que se passe-t'il? cela compile?

Pour déplacer la fenêtre il faut faire un clique gauche et deplacer la souris sans relâcher le clique.

Est-ce que les événements Form1_MouseDown et Form1_MouseMove sont bien appelés?

Ce que je ne comprends pas trop dans ce code ce sont les lignes suivantes:
MouseDown += new System.Windows.Forms.MouseEventHandler(Form1_MouseDown);
MouseMove += new System.Windows.Forms.MouseEventHandler(Form1_MouseMove);		MouseUp += new System.Windows.Forms.MouseEventHandler(Form1_MouseUp);	


Ces lignes n'ont selon moi rien à faire ici. Elles servent à lier les événements "appui de la souris" à la fonction qui doit être appelé: Form1_MouseDown
Donc si tu es dans la fonction Form2_MouseDown c'est que ta fonction est déjà lié à l'événement.

Je ne sais pas si j'ai été clair. En général ces lignes de commande sont générées automatiquement par ton interface et se trouvent dans la fonction "
InitializeComponent();
" qui est appelée dans ton Main.

Sinon pour les fonctions il y'a plein de trucs qui ne servent à rien:
xOffset et yOffset par exemple n'existent que dans ta fonction Form1_MouseDown donc à quoi servent-elles?

Et mouseOffset n'est pas utilisé.

Dans mon idée, j'aurai plutôt fait un truc comme ça:
public Point mouseOffset;
public bool isMouseDown=false;

public Form1()
{
InitializeComponent();
//Si pas déjà dans la fonction "InitializeComponent()"
this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseUp);
this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseMove);
this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseDown);
}

// [...]

private void Form1_MouseDown(object sender,System.Windows.Forms.MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
mouseOffset=new Point();
mouseOffset.X = e.X;//Sauvegarde de la position initiale de la form
mouseOffset.Y = e.Y;//Sauvegarde de la position initiale de la form
isMouseDown = true;//Autorise le déplacement de la Form
}
}

private void Form1_MouseMove(object sender,System.Windows.Forms.MouseEventArgs e)
{
if (isMouseDown)
{
Point mousePos = new Point(e.X-mouseOffset.X,e.Y-mouseOffset.Y);
Location = mousePos;
}
}

private void Form1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
isMouseDown = false;//Une fois le clique gauche relaché on ne déplace plus la fenêtre
}
}


En espérant que ça t'aide.

A+

*******************************************
SharpDevelop est mon ami! CSharpFR.com aussi!!!!!!!!!
3
cs_thebigboss Messages postés 216 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 12 avril 2017 2
15 juil. 2012 à 09:04
C'est ce que je pensais, ton programme est mal structuré. Le plus simple c'est que tu m'envoies ton projet et je vais essayer de te le corriger.

Je t'envoie mon email en message perso.


A+

*******************************************
SharpDevelop est mon ami! CSharpFR.com aussi!!!!!!!!!
3
HACKANDROID Messages postés 103 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 3 janvier 2013
14 juil. 2012 à 18:34
Merci pour cette réponse,

Mais le code ne marche pas si vous pourriez m'aider a le mettre en place

Merci de votre aide


Konichiwa (:

Ma page Facebook Spécial Chat
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
HACKANDROID Messages postés 103 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 3 janvier 2013
14 juil. 2012 à 20:44
Hm, désoler je suis nul mais je n'arrive pas sa me donne c'est erreurs :


Error	1	Expected class, delegate, enum, interface, or struct	W:\C#, C++\C#\Launcher 2 (Type 1)\Launcher 2 (Type 1)\Form1.cs	11
Error	2	Expected class, delegate, enum, interface, or struct	W:\C#, C++\C#\Launcher 2 (Type 1)\Launcher 2 (Type 1)\Form1.cs	12
Error	3	Expected class, delegate, enum, interface, or struct	W:\C#, C++\C#\Launcher 2 (Type 1)\Launcher 2 (Type 1)\Form1.cs	14
Error	4	Expected class, delegate, enum, interface, or struct	W:\C#, C++\C#\Launcher 2 (Type 1)\Launcher 2 (Type 1)\Form1.cs	18
Error	5	Expected class, delegate, enum, interface, or struct	W:\C#, C++\C#\Launcher 2 (Type 1)\Launcher 2 (Type 1)\Form1.cs	19
Error	6	Expected class, delegate, enum, interface, or struct	W:\C#, C++\C#\Launcher 2 (Type 1)\Launcher 2 (Type 1)\Form1.cs	20
Error	7	Expected class, delegate, enum, interface, or struct	W:\C#, C++\C#\Launcher 2 (Type 1)\Launcher 2 (Type 1)\Form1.cs	23
Error	8	Expected class, delegate, enum, interface, or struct	W:\C#, C++\C#\Launcher 2 (Type 1)\Launcher 2 (Type 1)\Form1.cs	28
Error	9	Expected class, delegate, enum, interface, or struct	W:\C#, C++\C#\Launcher 2 (Type 1)\Launcher 2 (Type 1)\Form1.cs	33
Error	10	Expected class, delegate, enum, interface, or struct	W:\C#, C++\C#\Launcher 2 (Type 1)\Launcher 2 (Type 1)\Form1.cs	38
Error	11	Expected class, delegate, enum, interface, or struct	W:\C#, C++\C#\Launcher 2 (Type 1)\Launcher 2 (Type 1)\Form1.cs	43
Error	12	Expected class, delegate, enum, interface, or struct	W:\C#, C++\C#\Launcher 2 (Type 1)\Launcher 2 (Type 1)\Form1.cs	48
Error	13	Expected class, delegate, enum, interface, or struct	W:\C#, C++\C#\Launcher 2 (Type 1)\Launcher 2 (Type 1)\Form1.cs	53
Error	14	Expected class, delegate, enum, interface, or struct	W:\C#, C++\C#\Launcher 2 (Type 1)\Launcher 2 (Type 1)\Form1.cs	58
Error	15	Expected class, delegate, enum, interface, or struct	W:\C#, C++\C#\Launcher 2 (Type 1)\Launcher 2 (Type 1)\Form1.cs	63
Error	16	Expected class, delegate, enum, interface, or struct	W:\C#, C++\C#\Launcher 2 (Type 1)\Launcher 2 (Type 1)\Form1.cs	68
Error	17	Expected class, delegate, enum, interface, or struct	W:\C#, C++\C#\Launcher 2 (Type 1)\Launcher 2 (Type 1)\Form1.cs	72
Error	18	Type or namespace definition, or end-of-file expected	W:\C#, C++\C#\Launcher 2 (Type 1)\Launcher 2 (Type 1)\Form1.cs	76





Ma page Facebook Spécial Chat
0
HACKANDROID Messages postés 103 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 3 janvier 2013
15 juil. 2012 à 23:52
D'accord merci pour ton aide c'est vraiment gentil


Konichiwa (:

Ma page Facebook Spécial Chat
0
Rejoignez-nous