Как преобразовать координаты экрана в относительные координаты (winforms)?

У меня есть следующая функция (что неверно):

private void TreeView_DragDrop(object sender, DragEventArgs e)
{
    TreeNode CurrentNode = 
        TreeView.GetNodeAt(e.X - this.Left - NotesView.Left, 
                           e.Y - this.Top - NotesView.Top);
    // [snip]...
}

но это неверно, потому что он не учитывает украшения формы... Я уверен, что должен быть лучший способ сделать это, кроме жесткого кодирования (что все равно будет неправильно, в зависимости от нескольких вещей, таких как Vista vs XP vs Win2k), но я не могу его найти.

1 ответов


вы можете использовать:

 Point clientPoint = TreeView.PointToClient( new Point( e.X, e.Y ) );

для получения относительных координат.