サブフォームをメインフォームの中央に表示する - 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を愛用