解像度に応じてフォームにスクロールバーをつける

解像度に応じてスクロールバーをつけるロジックです。
縦が1000未満ならスクロールバーをつけます。

まず共通の判断ロジックをBaseFormに記載

Public Class BaseForm


Public Shared Sub ApplyFormSettings(ByRef frm As Form)

‘ 画面の作業領域を取得(タスクバーを除いた使用可能領域)
Dim screenSize As Size = Screen.PrimaryScreen.WorkingArea.Size



‘ 解像度が 1024 以上ならスクロールバーを無効化、それ以下なら有効化
If screenSize.Height >= 1000 Then
frm.Size = New Size(Int(frm.Bounds.Width * screenSize.Width / 1248), screenSize.Height)

frm.AutoScroll = False

Else
‘ フォームサイズを調整(最大 1248×1024 に制限)
‘ frm.Size = New Size(Math.Min(1248, screenSize.Width), Math.Min(1024, screenSize.Height))
frm.Size = New Size(Int(frm.Bounds.Width * screenSize.Width / 1248), screenSize.Height)
frm.AutoScroll = True
frm.AutoScrollMinSize = New Size(1248, 1024)
‘ frm.FormBorderStyle = FormBorderStyle.None ‘ 枠を消す(オプション)
frm.WindowState = FormWindowState.Maximized ‘ 最大化(オプション)
End If

End Sub


End Class

各フォームにでフォームクラス定義で継承
Public Class frmSHG012
Inherits Form ‘ 直接 Form を継承

同じくNEWロジックでBaseFormを参照
Public Sub New()

‘ この呼び出しは、Windows フォーム デザイナで必要です。
InitializeComponent()
この後に記載
BaseForm.ApplyFormSettings(Me)

必要に応じてgrid等のはばと高さを調整
Private Sub frmKMA0A0_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
‘解像度に合わせて調整
Dim S As Screen = Screen.PrimaryScreen
‘Me.Size = New Size(S.Bounds.Width, S.Bounds.Height)
Grid1.Size = New Size(Int(Grid1.Size.Width * S.Bounds.Width / 1248), Int(Grid1.Size.Height * S.Bounds.Height / 1000) – 20)