オーバーライドしたWndProcでWM_CLOSEのメッセージを捕獲し、何も処理しないことで無かったことにする。 これにより、×ボタンなどにより閉じることができないフォームを作ることができる。 ただし、別の閉じる方法を提供しなければならない。

public class Form1 : System.Windows.Forms.Form
{
    // 途中略

    // WndProcメソッドをオーバーライドし
    // WM_CLOSEメッセージ自体を無視する
    protected override void WndProc( ref Message m )
    {
        const int WM_CLOSE = 0x10;

        // ウィンドウを閉じない
        if ( m.Msg == WM_CLOSE ) 
        {
            // 閉じる処理をキャンセル
            m.Result = IntPtr.Zero;
        }
        else
        {
            base.WndProc( ref m );
        }
    }
}
Public Class Form1
    Inherits System.Windows.Forms.Form

#Region " Windows フォーム デザイナで生成されたコード "
#End Region

    ' WndProcメソッドをオーバーライドし
    ' WM_CLOSEメッセージ自体を無視する
    Protected Overrides Sub WndProc(ByRef m As Message)

        Const WM_CLOSE As Integer = &H10

        ' ウィンドウを閉じない
        If m.Msg = WM_CLOSE Then

            ' 閉じる処理をキャンセル
            m.Result = IntPtr.Zero

        Else

            MyBase.WndProc(m)

        End If

    End Sub

End Class