0

Form表示位置、CenterParentのこと

Posted by Koumei on 2011年1月22日 in Windowsプログラミング |

 Visual StudioでMDI子フォームを作り、表示位置をCenterParentにする。
 期待としては親フォームの真ん中に出て欲しいのだが・・・
 出ない。

 ダイアログなどの場合、呼び出した元(Parent)の中央に出る。
 MDIでも中央に出すくらいできるだろうに、そうしてくれない。
 ちょっと不便。

 
 どうするかというと、ロケーションを計算してセットするしかない。
 昔は普通のフォームでもそうやって画面中央にしていたものである。

 
 親をfomMani、子をfrmSubとした例。

 まず、子フォームのStartPositionはManualにしておく。

 親フォームで位置を設定する場合・・・

     frmSub child = new frmSub();
     child.MdiParent = this;

     child.Location = new Point(
          (this.ClientSize.Width - child.Width) / 2,
          (this.ClientSize.Height - child.Height) / 2
     );

     child.Show();

 
 子フォームで位置を指定する場合・・・

     Load あるいは Activated イベントで

     this.Location = new Point(
          (this.MdiParent.ClientSize.Width - this.Width) / 2,
          (this.MdiParent.ClientSize.Height - this.Height) / 2
     );

 
 なのだが・・・
 なぜか出先のパソコンではうまく動作しない。
 子フォームのサイズがタイトルバー分小さくなってしまうのである。
 不思議だ。

コメントを残す

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

キャプチャ *

Copyright © 2009-2020 Koumei Soft 開発ログ All rights reserved.
This site is using the Desk Mess Mirrored theme, v2.5, from BuyNowShop.com.