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 Presentation Foundation Discussion :

[WPF] Déplacer une fenêtre sans barre de titre


Sujet :

Windows Presentation Foundation

  1. #1
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut [WPF] Déplacer une fenêtre sans barre de titre
    Salut,

    Dans une application WPF, j'ai une fenêtre qui n'a pas de bordure ni de barre de titre. Pour que l'utilisateur puisse la déplacer, j'ai mis un TextBlock qui sert de barre de titre, et j'ai géré les évènements MouseDown, MouseMove, et MouseUp. Seulement voilà, la fenêtre ne se déplace pas du tout comme elle devrait, elle fait des grands déplacements dès que je bouge un peu la souris... Je ne comprends pas du tout pourquoi, j'ai implémenté mon truc comme je le fais d'habitude en WinForms (avec les adaptations liées au changement de framework), mais ça ne marche pas
    Voilà mon code, je suppose que j'ai fait une erreur quelque part, mais je ne vois pas trop quoi...

    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
     
            #region Moving
     
            private double xstart;
            private double ystart;
            private bool isMoving = false;
     
            private void txtTitle_MouseDown(object sender, MouseButtonEventArgs e)
            {
                xstart = e.GetPosition(this).X;
                ystart = e.GetPosition(this).Y;
                isMoving = true;
            }
     
            private void txtTitle_MouseUp(object sender, MouseButtonEventArgs e)
            {
                isMoving = false;
            }
     
            private void txtTitle_MouseMove(object sender, MouseEventArgs e)
            {
                if (isMoving)
                {
                    double dx = e.GetPosition(this).X - xstart;
                    double dy = e.GetPosition(this).Y - ystart;
                    Left += xstart;
                    Top += ystart;
                }
            }
     
            #endregion
    Si vous avez une idée ça m'aiderait bien... merci d'avance !

    Tom

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Oups ! Vous fatiguez pas, j'ai trouvé...

    Problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                    double dx = e.GetPosition(this).X - xstart;
                    double dy = e.GetPosition(this).Y - ystart;
                    Left += xstart;
                    Top += ystart;
    Solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                    double dx = e.GetPosition(this).X - xstart;
                    double dy = e.GetPosition(this).Y - ystart;
                    Left += dx;
                    Top += dy;

    Quand on a la tête dans le code depuis trop longtemps on a du mal à voir l'évidence...

    Par contre ce qui me gêne, c'est que si je déplace la souris trop vite, je sors de mon TextBlock, et la fenêtre ne se déplace plus... je n'ai jamais eu ce problème avec WinForms il me semble. Une idée sur comment résoudre ce (nouveau) problème ?

  3. #3
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Oula, c'est bien compliqué pour pas grand-chose

    Ceci devrait te simplifier la vie: http://msdn2.microsoft.com/en-us/lib....dragmove.aspx

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Pas mal du tout en effet !
    Super simple, et aucun problème même avec un déplacement rapide de la souris.
    Merci !

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

Discussions similaires

  1. VB2008: Déplacer une fenêtre sans barre de titre plus..
    Par Erreur_404 dans le forum Windows Forms
    Réponses: 0
    Dernier message: 27/01/2009, 16h27
  2. [souris] déplacer une fenêtre sans bords
    Par if_zen dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 15/07/2006, 02h20
  3. Déplacer une Form sans barre de titre
    Par stigma dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 16/02/2006, 13h45
  4. Fenêtre sans barre de titre mais redimentionable
    Par gandf dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/07/2005, 10h49
  5. [TForm] Problème lors du déplacement d'une fenêtre sans barre de titre
    Par Benjamin GAGNEUX dans le forum Composants VCL
    Réponses: 3
    Dernier message: 14/10/2004, 17h10

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