サブフォームをメインフォームの中央に表示する - C#

概要

この記事では子フォームやサブフォームをメインフォームの中央に表示する方法を紹介します。

モーダルフォームの場合 - ShowDialogメソッドを用いる場合

モーダルフォームの場合は、"StartPosition"プロパティを"CenterParent"に設定しShowDialogメソッドでオーナーを親フォームに設定すると メインフォームの中央にサブフォームを表示できます。

UI

メインフォームとサブフォームを1つ作成します。メインフォームにはボタンを配置します。

サブフォームの"StartPosition"プロパティを"CenterParent"に設定します。

コード

下記コードを記述します。(ButtonのClickイベントを実装します。)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace FormPosition
{
  public partial class FormMain : Form
  {
    public FormMain()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      FormSub1 fs1 = new FormSub1();
      fs1.ShowDialog(this);
    }
  }
}

実行結果

アプリケーションを実行します。メインフォームが表示されますのでボタンをクリックします。


サブフォームがメインフォームの中央に表示されます。

モーダルフォームでない場合 - Showメソッドを用いる場合

モーダルフォームでない場合にはフォームのLeftとTopプロパティに表示する座標値を設定します。

UI

メインフォームとサブフォームを1つ作成します。メインフォームにはボタンを配置します。

サブフォームの"StartPosition"プロパティを"Manual"に設定します。

コード

下記コードを記述します。(ButtonのClickイベントを実装します。)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace FormPosition
{
  public partial class FormMain : Form
  {
    public FormMain()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      FormSub1 fs1 = new FormSub1();
      fs1.Left = this.Left + (this.Width - fs1.Width)/2;
      fs1.Top = this.Top + (this.Height - fs1.Height)/2;
      fs1.Show();
    }
  }
}

解説

サブフォームのインスタンスを作成します。
  FormSub1 fs1 = new FormSub1();

サブフォームのLeft Top プロパティに表示位置の座標を代入します。 今回は、メインフォームの中央に配置するため、メインフォームのLeft Top Width Height の値を利用して サブフォームを表示する位置を計算して座標値を設定します。
  fs1.Left = this.Left + (this.Width - fs1.Width)/2;
  fs1.Top = this.Top + (this.Height - fs1.Height)/2;

Left Topプロパティに値を代入後、Show() メソッドを呼び出してフォームを表示します。
  fs1.Show();

実行結果

アプリケーションを実行します。メインフォームが表示されますのでボタンをクリックします。


サブフォームがメインフォームの中央に表示されます。


著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2012-05-07
iPentec all rights reserverd.