Позиция курсора относительно приложения Я знаю, как получить позицию курсора: int X = Cursor.Position.X; int Y = Cursor.Position.Y; Но это относительно экрана. Как получить координаты относительно моей формы? Ответ 1 Используйте метод Control.PointToClient. Предполагая, что this указывает на рассматриваемую форму: var relativePoint = this.PointToClient(new Point(X, Y)); Или просто: var relativePoint = this.PointToClient(Cursor.Position); Ответ 2 Я бы использовал PointToClient следующим образом: Point p = yourForm.PointToClient(Cursor.Position); //if calling it in yourForm class, just replace yourForm with this or simply remove it. Ответ 3 Как пробовать подобное с помощью 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()); }
Ответ 1 Используйте метод Control.PointToClient. Предполагая, что this указывает на рассматриваемую форму: var relativePoint = this.PointToClient(new Point(X, Y)); Или просто: var relativePoint = this.PointToClient(Cursor.Position);
Ответ 2 Я бы использовал PointToClient следующим образом: Point p = yourForm.PointToClient(Cursor.Position); //if calling it in yourForm class, just replace yourForm with this or simply remove it.
Ответ 3 Как пробовать подобное с помощью 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()); }