プロプログラマ

プログラマーを職業としてます。 Flex,Air,C#,Oracle,HTML+JSの言語ノウハウを中心に情報発信していきます

[C#] モーダレスフォームを親ウィンドウの中央に表示するには

ダイアログなどのフォームを表示する場合、モーダル表示するのであれば、

Form1 f = new Form1();
f.StartPosition = FormStartPosition.CenterParent;
f.ShowDialog(this);
f.Dispose();

のようにすれば、
親ウィンドウの中央に、自動的に調整されて表示されます。

ですが、モーダレス表示させたい場合は、StartPositionプロパティを指定しても、中央には表示されません。

この場合、表示されるフォーム側(子側)で表示位置の調整が必要です。
FormLoadイベントで指定するのが良いようです。

private void Form1_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
);
}

このように設定すれば、StartPositionプロパティの指定にかかわらず、中央に表示されます。
ただし紛らしいいので、一応StartPositionプロパティは
Manualに設定しておいたほうがいいかもしれません。

 

== ランキングに参加しています。ぜひクリックお願いします ==

プログラム ブログランキングへ
にほんブログ村 IT技術ブログへ
にほんブログ村

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください