VB.NET Tips - フォームの位置設定を行う
今回はフォームの位置を画面上のどの位置に表示するかを行う処理になります。
フォーム位置設定の関数内では、Screen.PrimaryScreen.WorkingArea プロパティによりディスプレイの大きさを取得し
計算に使っています。この関数では Screen.PrimaryScreen を使っているので、ディスプレイが一台のみと想定しています。
尚、Screen.PrimaryScreen.WorkingArea プロパティにより、ディスプレイの作業領域が取得できますが、
作業領域とは、ディスプレイのデスクトップ領域からタスクバー、
ドッキングされたウィンドウ、およびドッキングされたツール バーを除いた部分のことをいいます。
フォームの位置設定を行う関数と実行例
01 | Public Class frmPosition |
17 | Private Sub SetWindowPosition( ByVal frmDes As Form, ByVal pos As enmWindowPos) |
19 | With Screen.PrimaryScreen.WorkingArea |
21 | Case enmWindowPos.Center |
22 | frmDes.Left = (.Width / 2) - (frmDes.Width / 2) + .Left |
23 | frmDes.Top = (.Height / 2) - (frmDes.Height / 2) + .Top |
25 | Case enmWindowPos.TopLeft |
29 | Case enmWindowPos.TopRight |
30 | frmDes.Left = .Width - frmDes.Width |
33 | Case enmWindowPos.BottomLeft |
35 | frmDes.Top = .Height - frmDes.Height |
37 | Case enmWindowPos.BottomRight |
38 | frmDes.Left = .Width - frmDes.Width |
39 | frmDes.Top = .Height - frmDes.Height |
47 | Private Sub Button1_Click(sender As Object , e As EventArgs) Handles Button1.Click |
49 | Dim arrRdo As RadioButton() = { Me .rdoTopLeft, Me .rdoTopRight, Me .rdoCenter, Me .rdoBottomLeft, Me .rdoBottomRight} |
50 | For Each rdo As RadioButton In arrRdo |
51 | If rdo.Checked = True Then |
53 | Dim enmPos As enmWindowPos = CType (rdo.Tag, enmWindowPos) |
55 | Call Me .SetWindowPosition( Me , enmPos) |
64 | Private Sub frmPosition_Load(sender As Object , e As EventArgs) Handles Me .Load |
66 | Me .rdoTopLeft.Tag = enmWindowPos.TopLeft |
67 | Me .rdoTopRight.Tag = enmWindowPos.TopRight |
68 | Me .rdoCenter.Tag = enmWindowPos.Center |
69 | Me .rdoBottomLeft.Tag = enmWindowPos.BottomLeft |
70 | Me .rdoBottomRight.Tag = enmWindowPos.BottomRight |
このプログラムは、各ラジオボタンをチェックし、「フォーム位置設定」ボタンを押下することで、
自分自身のフォームの位置が移動します。