CLR: .Net / Mono / Boo / Otros CLR > VB .NET

 Activar Boton X (cerrar) El Formulario

(1/2) > >>

serbc25:
Hola a todos:

Me han pasado esta funcion para desactivar el boton X del formulario:

'Declaración de constantes necesarias (valores en hexadecimal)

Private Const MF_BYPOSITION As Integer = &H400
Private Const MF_REMOVE As Integer = &H1000
Private Const MF_DISABLED As Integer = &H2

'Variable para saber si ya está desactivado el botón X
'Private pulsado As Boolean = True

'Importación de procedimientos externos almacenados
'en la librería de Windows USER32.DLL

'Obtener el menú de sistema
Private Declare Function GetSystemMenu Lib "User32" _
(ByVal hWnd As Integer, _
ByVal bRevert As Boolean) As IntPtr

'Obtener el número de elementos del menú de sistema
Private Declare Function GetMenuItemCount Lib "User32" _
(ByVal hMenu As Integer) As IntPtr

'Quitar elementos del menú de sistema
Private Declare Function RemoveMenu Lib "User32" _
(ByVal hMenu As Integer, _
ByVal nPosition As Integer, _
ByVal wFlags As Long) As IntPtr

'Redibujar la barra de título de la ventana
Private Declare Function DrawMenuBar Lib "User32" _
(ByVal hWnd As Integer) As IntPtr

Despues agrega esta rutina:

Private Sub DisableCloseButton(ByVal hWnd As IntPtr)
Try 'captura de excepciones

Dim menuItemCount As IntPtr
Dim hMenu As IntPtr
'Obtener el manejador del menú de sistema del formulario
hMenu = GetSystemMenu(hWnd.ToInt32(), False)
'Obtener la cuenta de los ítems del menú de sistema.
'Es el menú que aparece al pulsar sobre el icono a la izquierda
'de la Barra de título de la ventana, consta de los ítems: Restaurar, Mover,
'Tamaño,Minimizar, Maximizar, Separador, Cerrar.
menuItemCount = GetMenuItemCount(hMenu.ToInt32())
'Quitar el ítem Close (Cerrar), que es el último de ese menú
RemoveMenu(hMenu.ToInt32(), menuItemCount.ToInt32() - 1, MF_DISABLED Or
MF_BYPOSITION)
'Quitar el ítem Separador, el penúltimo de ese menú, entre Maximizar y
Cerrar
RemoveMenu(hMenu.ToInt32(), menuItemCount.ToInt32() - 2, MF_DISABLED Or
MF_BYPOSITION)
'Redibujar la barra de menú
DrawMenuBar(hWnd.ToInt32())

'mostrar un mensaje con la excepción producida
Catch pollo As Exception
MessageBox.Show("Se ha producido la excepción: " + vbCrLf + pollo.Message, _
"Error del programa", MessageBoxButtons.OK)
End Try


Y llamala asi:

'desactivo el boton cerrar del formulario
DisableCloseButton(Me.Handle)

Me gustaria como se hace para activarlo



 :unsure:

Maxi.Net:
Hola yo tengo una forma mas sencilla de esconder el boton cerrar (x) y de mostrarlo

Esconder:

1ero Debes ocultar los tres botones (Me.ControlBox= False), luego muestras el minimizar y maximizar.


Me.ControlBox= False    ' boton (x), minimizar y maximizar
Me.MaximizeBox= True  ' boton maximizar
Me.MinimizeBox= True   ' boton minimizar


Mostrar:

Me.ControlBox= True 'Muestra minimizar, maximizar y cerrar (x)

espero te sirva
Adios

senzao18:
Maxi.Net donde probaste tu forma de ocultar el boton por que ami no me hace que lo que tu dices en el POST...


Si lo hace, podrias decirme en que version :D de VS.Net lo haces???

jodijo5:
copachay, si lo que tu deseas es hacer que tu formulario no se cierre nunca, creo que no es necesario que actives o  descatives ese boton, yo lo hago así


--- Código: Text --- dim algo as boolean=trueprivate sub form_closing(sender as object, e as ....)    e.cancel=algoend subprivate sub button1_click(sender as object, e as event....)algo=not algoend sub  

Maxi.Net:
hola lo hago en vb.net 2002 y creeme que resulta
SOLO ES UN EFECTO VISUAL y podrias partir por ponerlo en el evento clic de un boton
adios

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa