如何在另一个表单上控制外部表单相对于pictureBox的位置?

时间:2013-04-24 05:56:29

标签: c# .net winforms position point

我正在开发一个图像查看器的Windows应用程序。该程序包含加载图片的主要表格和另一种动态加载swf文件的表格 我的应用程序的工作是这样的:当鼠标点击主窗体上的pictureBox时,将创建一个对象(第二种形式的类型),并且应该找到正确的位置。

我有问题要找到正确的位置。怎么会这样呢? 谢谢你的帮助

1 个答案:

答案 0 :(得分:2)

表单上子控件的位置在子坐标中给出。换句话说,在相对于父表单的坐标中。

表单的位置在屏幕坐标中给出,因为它们的父级是整个屏幕。

Location属性的不同重载的文档中调用了这个。

  

Control.Location获取或设置控件左上角相对于其容器左上角的坐标。

     

Form.Location获取或设置表示屏幕坐标中表单左上角的Point。

因此,您需要将表单A上PictureBox的位置从子坐标转换为屏幕坐标,然后您可以使用这些屏幕坐标来设置表单B的位置。

要在WinForms中执行此操作,请调用Control.PointToScreen方法:

Point childCoords  = myPictureBox.Location;
Point screenCoords = myPictureBox.PointToScreen(childCoords);

myOtherForm.Location = screenCoords;