При изменении положения элемента управления (путем изменения this.Top
) координаты мыши, возвращаемые с помощью MouseEventArgs
, также изменяются. Вместо использования параметра e
следует использовать Cursor.Position
, чтобы получить абсолютные (экранные) координаты , а затем преобразовать их, используя PointToClient
метод вашего родительского контроля. Таким образом, ваши координаты не будут зависеть от положения вашего элемента управления.
Чтобы лучше понять, что происходит, прежде чем делать все это, добавьте две метки в вашу форму и добавьте что-то подобное в ваш NoteDrag
метод:
// show relative coordinate
this.label1.Text = e.Y.ToString();
// show absolute coordinate
this.label2.Text = Cursor.Position.Y.ToString();