c# - 如何将屏幕坐标转换成相对坐标(winforms)?

标签 c# 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),但我找不到。

最佳答案

您可以使用:

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

获取相对坐标。

关于c# - 如何将屏幕坐标转换成相对坐标(winforms)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1005789/

相关文章:

c# - 基于文本框值的列表框排序

.NET WinForms 自定义控件 : how to get a reference to the containing form

c# - 带有 CaSTLe Windsor 的 Winforms MVP - 子窗体的 DI?

c# - 需要一个视觉控件来可视化逻辑 "A follows B"或 "A depends on B and C"以及此类关系

c# - 有时在 System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) 处超时 (...)

c# - 使用 UsingFactoryMethod 在 Windsor 中进行通用注册

c# - 使用静态记录器、静态帮助程序类进行依赖注入(inject)

c# - 如何对 <HEAD> 部分中的文件进行版本控制?

c# - 是否可以检测导航事件中是否加载了 IFRAME?

winforms - Windows 服务的运行时调试技巧?