VB.NETフォーム右上の閉じるボタンを無効にする

  • C#
  • VB.NET

スポンサーリンク

通常のフォームには右上に閉じるボタン [X] があります。技術系の掲示板を巡回していると、どうやら ControlBox のボタン (最大化、最小化ボタンなど) はそのままに、この閉じるボタンのみを無効にしたい場合があるようです。この望みを適える方法のひとつとして、Control のウィンドウ クラス (WNDCLASS) を作成する時に Style に CS_NOCLOSE を追加するというものがあります。.NET の場合ですと System.Windows.Forms.Form クラスの CreateParam プロパティをオーバーライドし、System.Windows.Forms.CreateParams の ClassStyle プロパティに SC_NOCLOSE を加えることで実現できます。

他にも閉じるボタンを無効にする方法はありますが、こちらの方法ですと「無効」であることが明示でき、[Alt] + [F4] キーによる Close も無効にすることができます。

サンプルコード

以下にサンプルコードを示します。

VB.NET 全般
' CreateParams プロパティをオーバーライドする
Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams
    Get
        Const CS_NOCLOSE As Integer = &H200

        Dim createParams As System.Windows.Forms.CreateParams = MyBase.CreateParams
        createParams.ClassStyle = createParams.ClassStyle Or CS_NOCLOSE

        Return createParams
    End Get
End Property

関連するリファレンス

以下に関連するリファレンスを示します。

System.Windows.Forms.Form クラス
System.Windows.Forms.Form.CreateParams プロパティ
System.Windows.Forms.CreateParams クラス
System.Windows.Forms.CreateParams.ClassStyle プロパティ

スポンサーリンク