web-dev-qa-db-fra.com

Position du curseur par rapport à l'application

Je sais comment obtenir la position du curseur:

 int X = Cursor.Position.X;
 int Y = Cursor.Position.Y;

Mais cela est relatif à l'écran. Comment obtenir les coordonnées relatives à mon formulaire?

18
Mordacai1000

Utilisez le Control.PointToClient méthode . En supposant que this pointe vers le formulaire en question:

var relativePoint = this.PointToClient(new Point(X, Y));

Ou simplement:

var relativePoint = this.PointToClient(Cursor.Position);
27
lc.

J'utiliserais PointToClient comme ceci:

Point p = yourForm.PointToClient(Cursor.Position);
//if calling it in yourForm class, just replace yourForm with this or simply remove it.
3
King King

Que diriez-vous d'essayer comme ça en utilisant le Control.PointToClient: -

public Form()
    {
        InitializeComponent();

        panel = new System.Windows.Forms.Panel();
        panel.Location = new System.Drawing.Point(90, 150);
        panel.Size = new System.Drawing.Size(200, 100);
        panel.Click += new System.EventHandler(this.panel_Click);
        this.Controls.Add(this.panel);
    }

  private void panel_Click(object sender, EventArgs e)
  {
    Point point = panel.PointToClient(Cursor.Position);
    MessageBox.Show(point.ToString());
  }
2
Rahul Tripathi