今回はフォームの位置を画面上のどの位置に表示するかを行う処理になります。
フォーム位置設定の関数内では、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
コメント