C#でWindowsフォームアプリケーションのフォームの位置を取得/設定する方法を紹介します。
フォームの位置を取得または設定するには、System.Windows.Forms名前空間にあるFormクラスのLocationプロパティ、またはLeftプロパティ、Topプロパティを使用します。
本記事ではVisual Studioで作成した、Windowsフォームアプリケーションのプロジェクトに記述するコードを記載します。
Windowsフォームアプリケーションのプロジェクトを作成する方法については、以下の記事を参照してください。
フォームの位置を取得する
Locationプロパティは画面座標におけるフォームの左上隅を表す位置をSystem.Drawing名前空間のPoint構造体で返します。
1 2 3 4 5 6 7 8 9 |
// フォームのインスタンスを生成 Form form = new Form(); form.Text = "Location"; form.Show(); // フォームの位置を取得する Point point = form.Location; int x = point.X; int y = point.Y; Console.WriteLine($"X座標: {x} Y座標: {y}"); |
Point構造体のXはフォームの左の座標、Yはフォームの上の座標になります。
LocationプロパティはPoint構造体を使用してフォームの位置を指定しますが、フォームの位置(左上)はLeftプロパティとTopプロパティでそれぞれ取得することもできます。
1 2 3 4 5 6 7 8 |
// フォームのインスタンスを生成 Form form = new Form(); form.Text = "Left Top"; form.Show(); // フォームの位置を取得する int left = form.Left; int top = form.Top; Console.WriteLine($"左座標: {left} 上座標: {top}"); |
フォームの位置を設定する
デザイナーのプロパティグリッドで設定する
フォームの位置は、フォームデザイナーのプロパティグリッドで設定できます。
フォームデザイナーを開きます。
フォームデザイナーを開いたら、プロパティウィンドウを表示します。
プロパティウィンドウが表示されていない場合は、メニューバーの「表示」メニューにある「プロパティ ウィンドウ」をクリックするかF4キーを押してください。
上記の画像のプロパティグリッドは項目別ではなくアルファベット順で表示しています。
デザイナーのプロパティグリッドにあるLocationプロパティのテキストボックスに、X座標とY座標をカンマ(,)で区切って入力します。
Locationプロパティの左にある「+」をクリックすると、X座標(Left)とY座標(Top)が展開して表示されますので、X座標(Left)とY座標(Top)をそれぞれのテキストボックスに入力することもできます。
フォームの位置を指定する際は、フォームのStartPositionプロパティの値にFormStartPosition.Manualを指定します。
コードで設定する
フォームを表示する位置は、コードで設定することもできます。
LocationプロパティにPoint構造体を指定することで、フォームの位置を設定することができます。
1 2 3 4 5 6 7 8 |
// Point構造体を定義(X座標: 100 Y座標: 200) Point point = new Point(100, 200); // フォームのインスタンスを生成 Form form = new Form(); form.Text = "Set Location"; form.StartPosition = FormStartPosition.Manual; form.Location = point; form.Show(); |
フォームの位置を設定する際は、フォームのStartPositionプロパティの値をFormStartPosition.Manualにします。
Locationプロパティの代わりに、LeftプロパティとTopプロパティで指定する場合は、以下のようになります。
1 2 3 4 5 6 7 |
// フォームのインスタンスを生成 Form form = new Form(); form.Text = "Set Left and Top"; form.StartPosition = FormStartPosition.Manual; form.Left = 100; form.Top = 200; form.Show(); |