disabledx

[ACTUALIZACION 02-09-2014]: se modifico el post y se uso el sourcecode para deplegar mejor el codigo.

Volviendo a los codigos y tutoriales, dejo este ejemplo de VB .NET para deshabilitar la X del formulario.

Y ademas, de yapa, el codigo para bloquear el cierre de la aplicacion con la combinacion de teclas ALT+F4

El formulario tendra 2 botones: uno para deshabilitar la X y otro para cerrar la aplicacion.

A continuacion el codigo.

Primero agregamos un Modulo al proyecto que tendra el sgte codigo:

Module Module1

Private Declare Function RemoveMenu Lib "user32" _(ByVal hMenu As IntPtr, ByVal nPosition As Integer, ByVal wFlags As Long) As IntPtr

Private Declare Function GetSystemMenu Lib "user32" _(ByVal hWnd As IntPtr, ByVal bRevert As Boolean) As IntPtr

Private Declare Function GetMenuItemCount Lib "user32" _(ByVal hMenu As IntPtr) As Integer

Private Declare Function DrawMenuBar Lib "user32" _(ByVal hwnd As IntPtr) As Boolean

Private Const MF_BYPOSITION = &H400

Private Const MF_REMOVE = &H1000

Private Const MF_DISABLED = &H2

Public Sub DisableCloseButton(ByVal hwnd As IntPtr)

Dim hMenu As IntPtr

Dim menuItemCount As Integer

hMenu = GetSystemMenu(hwnd,False)

menuItemCount = GetMenuItemCount(hMenu)

 
Call RemoveMenu(hMenu, menuItemCount – 1, MF_DISABLED Or MF_BYPOSITION)

Call RemoveMenu(hMenu, menuItemCount – 2, MF_DISABLED Or MF_BYPOSITION)

Call DrawMenuBar(hwnd)

End Sub

End Module

En el formulario, agregamos el sgte codigo en el boton Disabled X

Private Sub btnDeshabilitar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDeshabilitar.Click

DisableCloseButton(Me.Handle)

End Sub

Y este codigo impide el cierre de con las teclas ALT+F4

Private Sub Form1_Unload(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing

'impide la combinacion ALT+F4 para cerrar la aplicacion y cerrar el formulario con la X
e.Cancel = True

End Sub

Finalmente este seria el codigo del formulario completo:

Public Class Form1

Private Sub btnDeshabilitar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDeshabilitar.Click
DisableCloseButton(Me.Handle)
End Sub

Private Sub btnSalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalir.Click
Application.Exit()
End Sub

Private Sub Form1_Unload(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
'impide la combinacion ALT+F4 para cerrar la aplicacion y cerrar el formulario con la X
e.Cancel = True
End Sub

End Class

Este codigo fue probado con Visual Studio 2008.