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



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

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

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

表单的位置以屏幕坐标给出,因为它们的父元素是整个屏幕。

这在Location属性的不同重载的文档中被调用。

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

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

所以你需要将图片框在表单A上的位置从子坐标转换为屏幕坐标,然后你可以使用这些屏幕坐标来设置表单b的位置。

要在WinForms中做到这一点,调用Control.PointToScreen方法:
Point childCoords  = myPictureBox.Location;
Point screenCoords = myPictureBox.PointToScreen(childCoords);
myOtherForm.Location = screenCoords;

最新更新