VB.netで最大化する必要があるフォームがあります。ユーザーがサイズを変更したり、移動したりできないようにします。 どうすればいいですか?
ハイライトされたプロパティを設定します。 MaximimSizeプロパティとMinimizeSizeプロパティを同じサイズに設定します
//Set fixed border
yourForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D
//Set the state of your form to maximized
yourForm.WindowState = FormWindowState.Maximized
//Disable the minimize box and the maximize box
yourForm.MinimizeBox = False
yourForm.MaximizeBox = False
ユーザーがサイズ変更できないようにするには、プロパティウィンドウまたはコードからFormBoderStyleをFixed3DまたはFixedDialogに設定します。
frmYour.BorderStyle = System.WinForms.FormBorderStyle.Fixed3D
WindowStateプロパティをMaximizedに設定し、MaximizeBoxプロパティとMinimizeBoxプロパティをfalseに設定します。
ユーザーが動き回らないようにするには、WndProcをオーバーライドします
Protected Overrides Sub WndProc(ByRef m As Message)
Const WM_NCLBUTTONDOWN As Integer = 161
Const WM_SYSCOMMAND As Integer = 274
Const HTCAPTION As Integer = 2
Const SC_MOVE As Integer = 61456
If (m.Msg = WM_SYSCOMMAND) And (m.WParam.ToInt32() = SC_MOVE) Then
Return
End If
If (m.Msg = WM_NCLBUTTONDOWN) And (m.WParam.ToInt32() = HTCAPTION) Then
Return
End If
MyBase.WndProc(m)
End Sub
ウィンドウの開始スタイルを最大化に設定します。次に、最小化ボタンと最大化ボタンを非表示にします。
以下を使用して、UIを削除してこれを制御できます。
frmYour.MinimizeBox = False
frmYour.MaximizeBox = False
フォームロードイベントにいくつかのコードを追加します。
me.maximumsize = new size(Width, Height)
me.minimumsize = me.maximumsize
me.maximizebox = false
me.minimizebox = false
例:フォームの高さと幅がそれぞれ50ピクセルの場合:
me.maximumsize = new size(50, 50)
me.minimumsize = me.maximumsize
me.maximizebox = false
me.minimizebox = false
maximumsize
とminimumsize
をここに示すサイズと同じサイズに設定すると、フォームのサイズ変更ができなくなることに注意してください。
Sizegripsをドラッグして最大化ボタンを使用し、ヘッダーテキストをダブルクリックして最大化することでサイズ変更を防止する場合は、フォームのロードイベントに次のコードを挿入します。
Me.FormBorderStyle = Windows.Forms.FormBorderStyle.FixedSingle ' Prevent size grips
Me.MaximumSize = Me.Size ' Prevent maximize (also by doubleclick of header text)
もちろん、Fixedで始まるformborderstyleのすべての選択が可能です。