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

VB.NET Discussion :

Position de la souris relative à la fenêtre [Débutant]


Sujet :

VB.NET

  1. #1
    Membre régulier
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2010
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2010
    Messages : 46
    Points : 73
    Points
    73
    Par défaut Position de la souris relative à la fenêtre
    Bonjour,
    Me voilà confronté à un petit problème, j'ai cherché un peu partout et je ne trouve pas la réponse (qui doit certainement être quelque part mais que je n'ai pas trouvé). Je souhaiterais obtenir la position de la souris, relative à la fenêtre, et non à l'écran tout entier (Control.MousePosition.X/Y).
    Par exemple, si ma Form fait 500*500 et que je me trouve au milieu de celle-ci, que j'obtienne (250; 250).
    Merci d'avance de votre aide et désolé pour le dérangement.

    EDIT: J'ai un peu progressé...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
         ToolStripStatusLabel7.Text = e.X
         ToolStripStatusLabel9.Text = e.Y
    End Sub
    ...petit problème cependant, ceci ne fonctionne pas lorsque la souris est sur un autre composant que la Form, exemple, une TextBox. Ce qui donc ne résout pas mon problème.

  2. #2
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Points : 929
    Points
    929
    Par défaut
    Salut

    ajoute les handles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
         Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove, Button1.MouseMove, TextBox1.MouseMove
        ToolStripStatusLabel7.Text = e.X
         ToolStripStatusLabel9.Text = e.Y
     
        End Sub

  3. #3
    Membre régulier
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2010
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2010
    Messages : 46
    Points : 73
    Points
    73
    Par défaut
    Salut shayw,
    Merci de ta réponse, c'est parfait comme ça.
    Je ne savais pas du tout que l'on pouvait cumuler les Handles, j'aurais appris quelque chose de plus.
    Merci pour ton aide, A+.

  4. #4
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Points : 929
    Points
    929
    Par défaut
    ce n'est pas parceque tu écris form1_mousemove qui releve l'évenement mais
    les handles
    tu peux très bien écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     Private Sub  Blablabla (ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove, Button1.MouseMove, TextBox1.MouseMove
        ToolStripStatusLabel7.Text = e.X
         ToolStripStatusLabel9.Text = e.Y
     
        End Sub

  5. #5
    Membre éclairé Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Points : 801
    Points
    801
    Par défaut
    Salut,

    Il y a la méthode Control.PointToClient qui "calcule l'emplacement du point spécifié à l'écran en coordonnées client". Cela te permet d'avoir les coordonnées d'un point par rapport au control.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim p1 As Point = Button1.PointToClient(e.Location) 'coordonnées par rapport au bouton
    Dim p2 As Point = ComboBox1.PointToClient(e.Location) 'coordonnées par rapport à la combobox
    Dim p3 As Point = Me.PointToClient(e.Location) 'coordonnées par au form
    'etc.
    J’ai des questions à toutes vos réponses!

  6. #6
    Membre régulier
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2010
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2010
    Messages : 46
    Points : 73
    Points
    73
    Par défaut
    shayw: Merci, j'avais déjà remarqué que cette partie était seulement le nom (même si je laisse tout de même par défaut pour une question de facilité/habitude. Par contre, c'est vrai que l'accumulation des Handles m'a elle, étonné.

    -N4w4k-: Merci de cette précision, toujours bien de parfaire ces connaissances. J'ai essayé avec ton troisième exemple en faisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
        Me.Text = Me.PointToClient(e.Location).ToString
    End Sub
    Cela à bien entendu fonctionné et le titre de ma Form est remplacé par quelque chose comme "{X=a,Y=b}", cependant, j'ai été assez surpris des coordonnées affichées, je pensais que c'était par rapport au coin supérieur gauche, mais, à ce coin, j'ai: "{X=-58,Y=-80}". Je me suis demandé si c'était par rapport au milieu, cependant, non, là où j'ai "{X=0,Y=0}", c'est à un endroit manifestement aléatoire, vers le premier quart supérieur gauche. C'est normal?

    EDIT: Oh, j'ai relancé et les chiffres sont encore plus aberrants. Je suppose que je n'ai pas totalement compris le principe.

    Merci à vous deux pour votre aide, elle m'a vraiment été utile.

  7. #7
    Membre éclairé Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Points : 801
    Points
    801
    Par défaut
    Citation Envoyé par Orci76 Voir le message
    Oh, j'ai relancé et les chiffres sont encore plus aberrants. Je suppose que je n'ai pas totalement compris le principe.
    C'est moi qui me suis trompé.. En fait c'est avec MousePosition:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Private Sub Form1_MouseMove(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
            Me.Text = Me.PointToClient(MousePosition).ToString
        End Sub
    J’ai des questions à toutes vos réponses!

  8. #8
    Membre régulier
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2010
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2010
    Messages : 46
    Points : 73
    Points
    73
    Par défaut
    Ah, merci, ça fonctionne mieux comme ça :p, je me demande bien quels chiffres étaient donnés, c'était spécial :p.
    Merci pour ton aide, -N4w4k-

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/01/2012, 14h01
  2. Réponses: 10
    Dernier message: 10/03/2007, 14h43
  3. Menu en position:fixed plus haut que la fenêtre
    Par Maximil ian dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 15/12/2004, 23h14
  4. Déterminer la position de la souris
    Par genteur slayer dans le forum Composants VCL
    Réponses: 6
    Dernier message: 16/06/2003, 11h01
  5. FOnction api specifiant la position de la souris
    Par florent dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/05/2002, 20h07

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