2015-12-10 7 views
0

Я создаю пользовательский слайдер, чтобы настроить сам внешний вид.C# пользовательский элемент управления курсором

Однако я не могу найти способ получить позицию курсора относительно элемента управления. Было бы удобно программировать для каждого элемента управления после того, как вы наполнили элементы управления в моей программе. Но я хотел бы иметь полную функциональность внутри проекта пользовательского контроля и только беспокоиться о получении значения с ползунка, когда он находится внутри моей программы.

Так что мне нужно получить отслеживание курсора внутри проекта пользовательского контроля. Я попытался с помощью события здесь:

private void CustomSlider_MouseDown(object sender, MouseEventArgs e) 
    { 

    } 

Но единственное место я могу получить это «глобальный» экрана положение курсора, которое не поможет мне, если я не знаю, положение контроль.

Надеюсь, мой вопрос ясен, спасибо.

+3

вы смотрели на '' eX' и eY'? – Erik

+0

Посмотрите на использование ['SetCapture'] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms646262%28v=vs.85%29.aspx). Вам нужно будет вытащить его, но он должен дать вам то, что вам нужно. – xxbbcc

+0

Просто попробовал e.X и e.Y, и похоже, что это именно то, что я ищу, спасибо :) –

ответ

0

Чтобы получить позицию курсора внутри элемента управления обработки события или соответствующего виртуального метода, следует использовать свойство MouseEventArgs.Location (MSDN):

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

Для того, чтобы получить позицию курсора вне контроля, используйте Control.MousePosition (MSDN) статическое свойство и (MSDN) метод PointToClient():

CustomControl ctrl = ... 
Point cursorPos = ctrl.PointToClient(Control.MousePosition); 
Смежные вопросы