オーバーライドしたWndProcでALT+F4のキー入力メッセージを捕獲し、何も処理しないことで無かったことにする。 ALT+F4を押したときにはWM_SYSKEYDOWNメッセージが送信されてくる。

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

    // WndProcメソッドをオーバーライドし
    // ALT+F4で閉じることができないようにする
    protected override void WndProc( ref Message m )
    {
        const int WM_SYSKEYDOWN = 0x0104;
        const int VK_F4 = 0x73;

        // ウィンドウを閉じない
        if ( m.Msg == WM_SYSKEYDOWN && m.WParam.ToInt32() == VK_F4 ) 
        {
            // ALT+F4に対する処理を行わない
            m.Result = IntPtr.Zero;
        }
        else
        {
            base.WndProc( ref m );
        }
    }
}
Public Class Form1
    Inherits System.Windows.Forms.Form

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

    ' WndProcメソッドをオーバーライドし
    ' ALT+F4で閉じることができないようにする
    Protected Overrides Sub WndProc(ByRef m As Message)

        Const WM_SYSKEYDOWN As Integer = &H104
        Const VK_F4 As Integer = &H73

        ' ウィンドウを閉じない
        If m.Msg = WM_SYSKEYDOWN AndAlso m.WParam.ToInt32() = VK_F4 Then

            ' ALT+F4に対する処理を行わない
            m.Result = IntPtr.Zero

        Else

            MyBase.WndProc(m)

        End If

    End Sub

End Class