2009-06-17 226 views
6

我有以下功能(也就是不正确的):如何转换屏幕坐标以形成相对坐标(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),但是我找不到它。

回答

11

您可以使用:

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

获得相对坐标。

相关问题