C#自定义控件光标位置

本文关键字:位置 光标 自定义控件 | 更新日期: 2023-09-27 18:26:23

我正在制作一个自定义控件滑块,这样我就可以自己调整外观了。

但是,我找不到一种方法来获得光标相对于控件的位置。在将控件放入我的程序后,为每个控件编写代码可能会很容易。但我希望在自定义控件项目中拥有完整的功能,并且只需要担心在滑块进入程序后从滑块中获得值。

所以我需要在自定义控件项目中完成光标跟踪。我尝试在这里使用事件:

private void CustomSlider_MouseDown(object sender, MouseEventArgs e)
    {
    }

但我唯一能得到的位置是光标的"全局"屏幕位置,除非我知道控件的位置,否则这对我没有帮助。

我希望我的问题很清楚,谢谢。

C#自定义控件光标位置

要在控件的事件处理程序或相应的虚拟方法中获取光标位置,请使用MouseEventArgs.Location(MSDN)属性:

class CustomControl : Control {
    protected override void OnMouseDown(MouseEventArgs e) {
        Point cursorPos = e.Location;
    }
}

要获取控件外的光标位置,请使用Control.MousePosition(MSDN)静态属性和PointToClient()(MSDN)方法:

CustomControl ctrl = ...
Point cursorPos = ctrl.PointToClient(Control.MousePosition);