Forms Deplacement OnMouse [Résolu]

HACKANDROID 108 Messages postés mardi 12 juillet 2011Date d'inscription 3 janvier 2013 Dernière intervention - 13 juil. 2012 à 23:29 - Dernière réponse : HACKANDROID 108 Messages postés mardi 12 juillet 2011Date d'inscription 3 janvier 2013 Dernière intervention
- 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
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
cs_thebigboss 216 Messages postés jeudi 30 janvier 2003Date d'inscription 12 avril 2017 Dernière intervention - 14 juil. 2012 à 00:03
3
Merci
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!!!!!!!!!

Merci cs_thebigboss 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de cs_thebigboss
Meilleure réponse
cs_thebigboss 216 Messages postés jeudi 30 janvier 2003Date d'inscription 12 avril 2017 Dernière intervention - 14 juil. 2012 à 19:16
3
Merci
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!!!!!!!!!

Merci cs_thebigboss 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de cs_thebigboss
Meilleure réponse
cs_thebigboss 216 Messages postés jeudi 30 janvier 2003Date d'inscription 12 avril 2017 Dernière intervention - 15 juil. 2012 à 09:04
3
Merci
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!!!!!!!!!

Merci cs_thebigboss 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de cs_thebigboss
HACKANDROID 108 Messages postés mardi 12 juillet 2011Date d'inscription 3 janvier 2013 Dernière intervention - 14 juil. 2012 à 18:34
0
Merci
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
Commenter la réponse de HACKANDROID
HACKANDROID 108 Messages postés mardi 12 juillet 2011Date d'inscription 3 janvier 2013 Dernière intervention - 14 juil. 2012 à 20:44
0
Merci
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
Commenter la réponse de HACKANDROID
HACKANDROID 108 Messages postés mardi 12 juillet 2011Date d'inscription 3 janvier 2013 Dernière intervention - 15 juil. 2012 à 23:52
0
Merci
D'accord merci pour ton aide c'est vraiment gentil


Konichiwa (:

Ma page Facebook Spécial Chat
Commenter la réponse de HACKANDROID

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.