今回はフォームの位置を画面上のどの位置に表示するかを行う処理になります。
フォーム位置設定の関数内では、Screen.PrimaryScreen.WorkingArea プロパティによりディスプレイの大きさを取得し 計算に使っています。この関数では Screen.PrimaryScreen を使っているので、ディスプレイが一台のみと想定しています。
尚、Screen.PrimaryScreen.WorkingArea プロパティにより、ディスプレイの作業領域が取得できますが、 作業領域とは、ディスプレイのデスクトップ領域からタスクバー、 ドッキングされたウィンドウ、およびドッキングされたツール バーを除いた部分のことをいいます。
フォームの位置設定を行う関数と実行例
Public Class frmPosition
'フォーム位置宣言
Enum enmWindowPos
Center = 0 '中央
TopLeft '左上
TopRight '右上
BottomLeft '左下
BottomRight '右下
End Enum
''' <summary>
''' フォームの位置設定
''' </summary>
''' <param name="frmDes">対象のフォーム</param>
''' <param name="pos">位置</param>
Private Sub SetWindowPosition(ByVal frmDes As Form, ByVal pos As enmWindowPos)
With Screen.PrimaryScreen.WorkingArea
Select Case pos
Case enmWindowPos.Center '中央
frmDes.Left = (.Width / 2) - (frmDes.Width / 2) + .Left
frmDes.Top = (.Height / 2) - (frmDes.Height / 2) + .Top
Case enmWindowPos.TopLeft '左上
frmDes.Left = 0
frmDes.Top = 0
Case enmWindowPos.TopRight '右上
frmDes.Left = .Width - frmDes.Width
frmDes.Top = 0
Case enmWindowPos.BottomLeft '左下
frmDes.Left = 0
frmDes.Top = .Height - frmDes.Height
Case enmWindowPos.BottomRight '左下
frmDes.Left = .Width - frmDes.Width
frmDes.Top = .Height - frmDes.Height
End Select
End With
End Sub
''' <summary>
''' ボタンクリックイベント
''' </summary>
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'チェックするラジオボタン
Dim arrRdo As RadioButton() =
{Me.rdoTopLeft, Me.rdoTopRight, Me.rdoCenter, Me.rdoBottomLeft, Me.rdoBottomRight}
For Each rdo As RadioButton In arrRdo
If rdo.Checked = True Then
'Tagより位置設定指示を取得
Dim enmPos As enmWindowPos = CType(rdo.Tag, enmWindowPos)
'ウインドウ設定
Call Me.SetWindowPosition(Me, enmPos)
Exit For
End If
Next
End Sub
''' <summary>
''' フォームロードイベント
''' </summary>
Private Sub frmPosition_Load(sender As Object, e As EventArgs) Handles Me.Load
'ラジオボタンのTagにウインドウ位置Enum設定
Me.rdoTopLeft.Tag = enmWindowPos.TopLeft
Me.rdoTopRight.Tag = enmWindowPos.TopRight
Me.rdoCenter.Tag = enmWindowPos.Center
Me.rdoBottomLeft.Tag = enmWindowPos.BottomLeft
Me.rdoBottomRight.Tag = enmWindowPos.BottomRight
End Sub
End Class
このプログラムは、各ラジオボタンをチェックし、「フォーム位置設定」ボタンを押下することで、 自分自身のフォームの位置が移動します。
関連する記事
⇒フォームの位置設定を行う処理 :[Screen.PrimaryScreen.WorkingArea]⇒フォームクラスにプロパティ宣言し外からアクセスする方法
⇒親フォームのコントロールを子フォームからアクセスする方法
⇒フォームが閉じるのをキャンセルする方法:[FormClosingEventArgs,Cancel]
⇒フォームの表示をモジュールのMain関数から行う(エントリポイントの変更)
⇒フォームがKeyDownなどのキーイベントを受取り、ファンクションキー処理をする
⇒最初のフォームActivatedイベントでの処理(1回のみしか処理しない様にする)
⇒初回のフォームActivatedイベント発生させるフォーム継承について
PR
コメント