Я знаю, как получить позицию курсора:позиции курсора относительно применения
int X = Cursor.Position.X;
int Y = Cursor.Position.Y;
Но это относительно экрана. Как получить координаты относительно моей формы?
Я знаю, как получить позицию курсора:позиции курсора относительно применения
int X = Cursor.Position.X;
int Y = Cursor.Position.Y;
Но это относительно экрана. Как получить координаты относительно моей формы?
Используйте Control.PointToClient
method. Предполагая, что this
указывает на форме вопроса:
var relativePoint = this.PointToClient(new Point(X, Y));
Или просто:
var relativePoint = this.PointToClient(Cursor.Position);
Я хотел бы использовать PointToClient
так:
Point p = yourForm.PointToClient(Cursor.Position);
//if calling it in yourForm class, just replace yourForm with this or simply remove it.
Как о попытке, как это с помощью 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());
}
Shure он бы работал хорошо, спасибо, хотя – Mordacai1000
@ Mordacai1000: - Добро пожаловать! –
Я использовал: var relativePoint = this.PointToClient (Cursor.Position); но он возвращает координаты экрана – Mordacai1000
Действительно? Это странно ... –
Просто попробовал, и это работает для меня: 'var cpos = Cursor.Position; MessageBox.Show (String.Format ("{0} \ n {1}", cpos, this.PointToClient (cpos))); 'дает две разные точки –