×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
今回はフォームの位置を画面上のどの位置に表示するかを行う処理になります。
フォーム位置設定の関数内では、Screen.PrimaryScreen.WorkingArea プロパティによりディスプレイの大きさを取得し 計算に使っています。この関数では Screen.PrimaryScreen を使っているので、ディスプレイが一台のみと想定しています。
尚、Screen.PrimaryScreen.WorkingArea プロパティにより、ディスプレイの作業領域が取得できますが、 作業領域とは、ディスプレイのデスクトップ領域からタスクバー、 ドッキングされたウィンドウ、およびドッキングされたツール バーを除いた部分のことをいいます。
フォームの位置設定を行う関数と実行例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | 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イベント発生させるフォーム継承について
コメント