2008年2月20日水曜日

MDIの子画面を親画面の中央に移動

親画面の中央に子画面を表示するのは
起動時は子画面のプロパティのみでできますが、
親画面のサイズを変更したときに、子画面を
親画面の中央にもっていくのは一工夫が必要
ということで、私なりにやってみました。

Private Sub Form1_Resize(ByVal sender As Object, _
ByVal e As System.EventArgs) _
Handles MyBase.Resize

Dim sz As New Size ’親画面の子画面表示領域

For Each c As System.Windows.Forms.Control In Me.Controls
If TypeOf c Is System.Windows.Forms.MdiClient Then
sz
.Width = c.ClientRectangle.Width
sz.Height = c.
ClientRectangle.Height
Exit For
End If
Next c


'子フォームを親フォームの中央に表示
For Each hMdiChild As Form In
Me.MdiChildren
hMdiChild.Left = (sz.Width - hMdiChild.Width) / 2
hMdiChild.Top = (sz.Height - hMdiChild.Height) / 2
Next hMdiChild
End Sub


こんな感じで親画面の画面サイズを変更したときに
子画面を中央に配置することができました。

ここで注意しないといけないのが、親画面に表示する
子画面の領域はClientRectangle.Widthではないと
正確な領域が取得できないということでしょうか。

0 件のコメント: