Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#自定义控件光标位置_C#_Winforms - Fatal编程技术网

C#自定义控件光标位置

C#自定义控件光标位置,c#,winforms,C#,Winforms,我正在制作一个自定义控制滑块,这样我就可以自己调整外观了 但是,我找不到一种方法来获取光标相对于控件的位置。 在我的程序中插入控件之后,为每个控件编写代码可能会很容易。但是我希望在自定义控件项目中拥有完整的功能,并且只需要担心一旦滑块进入我的程序中,它就会从滑块中获取一个值 所以我需要在自定义控件项目中完成光标跟踪。 我已尝试在此处使用事件: private void CustomSlider_MouseDown(object sender, MouseEventArgs e) {

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

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

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

private void CustomSlider_MouseDown(object sender, MouseEventArgs e)
    {

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


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

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

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

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


您是否查看了
e.X
e.Y
?查看使用。你必须用Pinvoke,但它应该能满足你的需要。刚刚试过e.X和e.Y,它看起来正是我想要的,谢谢:)
CustomControl ctrl = ...
Point cursorPos = ctrl.PointToClient(Control.MousePosition);