DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

DOBON.NET

フォームが画面の真ん中に表示されるようにする

フォームがはじめに表示される時に画面の真ん中に表示されるようにするには、フォームのStartPositionプロパティをFormStartPosition.CenterScreenにします。

Dim f As New Form1()
'フォームを画面の真ん中に表示する
f.StartPosition = FormStartPosition.CenterScreen
f.Show()
Form3 f = new Form1();
//フォームを画面の真ん中に表示する
f.StartPosition = FormStartPosition.CenterScreen;
f.Show();

モーダルフォームを親フォームの真ん中に表示する

StartPositionプロパティをFormStartPosition.CenterParentとすると、モーダルフォームを表示させた元のフォームや、MDIの親フォームの真ん中に表示されるようになります。

Dim f As New Form1()
'フォームを親フォームの真ん中に表示する
f.StartPosition = FormStartPosition.CenterParent
f.ShowDialog(Me)
f.Dispose()
Form3 f = new Form1();
//フォームを親フォームの真ん中に表示する
f.StartPosition = FormStartPosition.CenterParent;
f.ShowDialog(this);
f.Dispose();

モードレスフォームを親フォームの真ん中に表示する

モードレスフォームを親フォームの中央に表示するようにするには、表示位置を自分で計算する必要があります。例えば、Form2のLoadイベントハンドラに次のようなコードを書き、Form2の親フォームを指定してからShowメソッドでフォームを表示すると、Form2は親フォームの中央に表示されるようになります。(親フォームを指定する方法については、「モードレスのフォームが、あるフォームの背後に隠れないようにする」をご覧ください。)

'フォームのLoadイベントハンドラ
Private Sub Form2_Load(ByVal sender As Object, _
    ByVal e As System.EventArgs) Handles MyBase.Load
    Me.Location = New Point( _
        Me.Owner.Location.X + (Me.Owner.Width - Me.Width) \ 2, _
        Me.Owner.Location.Y + (Me.Owner.Height - Me.Height) \ 2)
End Sub
//フォームのLoadイベントハンドラ
private void Form2_Load(object sender, System.EventArgs e)
{
    this.Location = new Point(
        this.Owner.Location.X + (this.Owner.Width - this.Width) / 2,
        this.Owner.Location.Y + (this.Owner.Height - this.Height) / 2);
}

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • このサイトで紹介されているコードの多くは、例外処理が省略されています。例外処理については、こちらをご覧ください。
  • イベントハンドラの意味が分からない、C#のコードをそのまま書いても動かないという方は、こちらをご覧ください。