1

画像ビューアであるWindowsアプリケーションを開発しています。このプログラムには、画像をロードするためのメイン フォームと、swf ファイルを動的にロードするための別のフォームが含まれています。
私のアプリケーションの作業は次のようなものです: メイン フォームの pictureBox をマウスでクリックすると、オブジェクトが作成され (2 番目のフォームのタイプ)、正しい位置に配置されます。

正しい位置を取得するのに問題があります。どうすればこれを行うことができますか?
ご協力いただきありがとうございます

4

1 に答える 1

2

フォーム上の子コントロールの位置は、子座標で指定されます。つまり、親フォームに相対的な座標です。

親が画面全体であるため、フォームの位置は画面座標で指定されます。

これは、プロパティのさまざまなオーバーロードのドキュメントで呼び出されLocationます。

Control.Location:コンテナーの左上隅を基準としたコントロールの左上隅の座標を取得または設定します。

Form.Location: Form の左上隅を画面座標で表す Point を取得または設定します。

したがって、フォーム A の PictureBox の位置を子座標から画面座標に変換する必要があり、それらの画面座標を使用してフォーム B の位置を設定できます。

WinForms でこれを行うには、次のControl.PointToScreenメソッドを呼び出します。

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

myOtherForm.Location = screenCoords;
于 2013-04-24T06:06:05.253 に答える