获取相对于控件的光标位置 - C#

Far*_*man 31 c# mouse winforms mouse-position

我想获得鼠标指针所在的控件的鼠标位置.这意味着当我将光标放在控件的起点(左上角)时,它应该给出(0,0).我使用以下代码:

    private void panel1_MouseMove(object sender, MouseEventArgs e)
    {
        this.Text = Convert.ToString(Cursor.Position.X + ":" + Cursor.Position.Y);         
    } 
Run Code Online (Sandbox Code Playgroud)

但是这给出了与屏幕无关的控制位置.

代码示例将不胜感激.

Bre*_*McK 42

使用Control.PointToClient将点从屏幕相对坐标转换为控制相对坐标.如果您需要采用其他方式,请使用PointToScreen.


Ani*_*Ani 28

您可以直接使用传递给事件处理程序LocationMouseEventArgs参数的属性.

private void panel1_MouseMove(object sender, MouseEventArgs e)
{
    Text = e.Location.X + ":" + e.Location.Y;      
} 
Run Code Online (Sandbox Code Playgroud)


Jus*_*tas 15

以下内容将为您提供相对于您的控件的鼠标坐标.例如,如果鼠标位于控件的左上角,则会产生(0,0):

var coordinates = yourControl.PointToClient(Cursor.Position);
Run Code Online (Sandbox Code Playgroud)


小智 5

可以使用以下方法从绝对坐标获取相对坐标以及从相对坐标获取绝对坐标:

Point Control.PointToClient(Point point);

Point Control.PointToScreen(Point point);
Run Code Online (Sandbox Code Playgroud)