C# 获取控件在窗体上的位置

标签 c# winforms controls

当控件可能位于其他控件(如面板)内时,是否有任何方法可以检索控件在表单中的位置?

控件的 Left 和 Top 属性仅提供它在父控件中的位置,但如果我的控件位于五个嵌套面板内,并且我需要它在窗体上的位置怎么办?

简单示例:

按钮 btnA 位于面板 pnlB 内的坐标 (10,10) 上。
面板 pnlB 位于窗体 frmC 内的坐标 (15,15) 上。

我想要 btnA 在 frmC 上的位置,即 (25,25)。

我能得到这个位置吗?

最佳答案

我通常结合使用 PointToScreenPointToClient:

Point locationOnForm = control.FindForm().PointToClient(
    control.Parent.PointToScreen(control.Location));

关于C# 获取控件在窗体上的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1478022/

相关文章:

c# - 将背景图像导入/设置到 Windows 窗体导致运行缓慢

c# - System.Windows.Forms.Timer 是否在与 UI 不同的线程上运行?

java - 我们如何控制Java中变量是否存在?

c# - 一个好的 html 功能 richedit 替代 winforms?

c# - 模拟 HttpListenerContext

c# - 即使在 Finalizer 运行后 FileSystemWatcher 内存泄漏

c# - 存折/ATM 机(信息亭)的请求响应 iso8583 消息

c# - Visual Studio 用户控件设计

.net - 如何为使用 winforms 的 Controller 类编写单元测试?

java - osmdroid 的自定义缩放按钮