C#フォーム右上の閉じるボタンを無効にする

スポンサーリンク

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

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

サンプルコード

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

C# 全般
// CreateParams プロパティをオーバーライドする
protected override System.Windows.Forms.CreateParams CreateParams {
    get {
        const int CS_NOCLOSE = 0x200;

        System.Windows.Forms.CreateParams createParams = base.CreateParams;
        createParams.ClassStyle |= CS_NOCLOSE;

        return createParams;
    }
}

関連するリファレンス

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

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

スポンサーリンク