Novedades de .NET 9

El nuevo .NET 9, está enfocado en el rendimiento tal como lo dicen en su documentación. Mas información en este enlace.

Deshabilitar el botón cerrar [X] de Formularios en Visual Basic 2005/2008

Para los que lo necesiten dejo este código que está en la documentación de MSDN (Clase CreateParams) y también encontré buscando en la red.

El presente código debe ir luego de Public Class NombreFormulario:
Dim _enabledCerrar As Boolean = False
< System.ComponentModel.DefaultValue(False), System.ComponentModel.Description( "Define si se habilita el botón cerrar en el formulario" )> _
Public Property EnabledCerrar() As Boolean
    Get
         Return
_enabledCerrar
   End Get
   Set
(ByVal Value As Boolean)
     If _enabledCerrar <> Value Then
         _enabledCerrar = Value
     End If
  End Set
End Property
Protected Overrides ReadOnly Property CreateParams() As CreateParams
      Get
               Dim cp As CreateParams = MyBase.CreateParams
               If _enabledCerrar = False Then
                    Const CS_NOCLOSE As Integer = &H200
                    cp.ClassStyle = cp.ClassStyle Or CS_NOCLOSE
               End If
               Return cp
     End Get
End Property

 

Espero les sirva

Comentarios

  1. Muchisimas Gracias por el codigo. Probe millones de posibilidades para deshabilitar el boton cerrar. Y este codigo es justo lo que estaba necesitando. Funciona barbaro.
    Gracias por compartirlo

    ResponderEliminar
  2. Hola Andres

    Que bueno que te haya servido y gracias por visitar el blog.

    Saludos cordiales

    ResponderEliminar
  3. ¡Hola genial!

    ¡Felicidades!¡Congrulations! Me ha gustado mucho tu blog y es interesante, mucho ánimo.

    Mi blog es:
    http://sordobierzo.blogspot.com/

    Muchas gracias.

    Un abrazo

    ResponderEliminar
  4. Coincido con Andrea... es genial tu código.
    Yo tenía el método para el visual basic 6.0, y es totalmente diferente y no corre en 2005.
    Gracias Wilfredo.

    Saludos cordiales.

    ResponderEliminar
  5. Gracias a ustedes que visitan el blog y si les sirve pues felicitaciones.

    Saludos cordiales

    ResponderEliminar
  6. amigo gracias por el codigo probe muchos y nada que ver pero este codigo de maravillas en VS 2010

    ResponderEliminar
  7. Pues que bueno que te sirva, gracias por visitar el blog.

    Saludos cordiales

    ResponderEliminar
  8. hola, hay una forma de que a ese código en lugar de desactivar el botón X, agregarle un msgbox al hacer clics con opciones???
    Gracias

    ResponderEliminar
  9. La verdad no entendí bien tu pregunta.

    El código alli, es justamente para deshabilitar la X o cerrar del formulario, si tienes alguna otra duda por favor sé mas específico con tu pregunta.

    Saludos cordiales

    ResponderEliminar
  10. si, creo que no me explique bien
    mi pregunta es:
    que si hay un codigo, no para deshabilitar el boton X, si no para que cuando se haga clic en este muestre un msgbox con opciones

    ResponderEliminar
  11. Hola

    Todo eso se puede implementar, no hay el código exactamente que necesitas, pero es cosa de adecuarlo a como tu lo necesites.

    Te dejo este link, en el cual está toda la idea general de lo que necesitas: http://www.elguille.info/NET/dotnet/comoFormControlMenu.htm

    ResponderEliminar
  12. es lo que estaba buscando muchisimas gracias.

    ResponderEliminar
  13. Muchas gracias, lo probé con VB2010 y funcionó.

    Saludos.

    ResponderEliminar
  14. Funciona!, muchas gracias por el código, lo estaba necesitando.

    ResponderEliminar
  15. funciono muy bien !!!!

    ResponderEliminar
  16. muy buen post, me sirvió mucho sigue asi

    ResponderEliminar
  17. Muchas gracias, después de un rato de buscar, al fin encontré tu solución!

    ResponderEliminar
  18. Que bueno que te haya servidor, gracias por visitar el blog

    ResponderEliminar
  19. Que bueno que te haya servidor, gracias por visitar el blog

    ResponderEliminar
  20. Buen código, ¿es posible volver a habilitar en tiempo de ejecucion con esta propiedad?

    Por ejemplo:
    Private Sub boton1_Click(sender As System.Object, e As System.EventArgs) Handles boton1.Click

    Me.EneabledCerar = True

    End Sub

    Muchas Gracias por tu aporte...

    El_Yor

    ResponderEliminar
  21. Ya lo utilice en visual basic 2012.... y funciono correctamente.... GRACIAS!!!!

    ResponderEliminar
  22. No hay porqué, gracias a ti por visitar el blog y que bueno que te haya servido.

    Saludos cordiales

    ResponderEliminar
  23. Muy buena solucion. Gracias, me sirvió de mucho.

    ResponderEliminar
  24. Quisiera saber si es que se puede habilitar y deshabiltar el boton cerrar al momento de tickear un checkbox.

    ResponderEliminar
  25. No entendí bien tu pregunta, si podrías explicar que es lo que pretendes hacer, talvez te pueda dar alguna salida mas concreta.

    Saludos

    ResponderEliminar
  26. Bueno lo que quiero es que cuando seleccione un checkbox se deshabilite la X como hace este codigo en el principio del formulario y que cuando deshabilite el checkbox se vueva a habilitar es decir en tiempo de ejecución.

    ResponderEliminar
  27. Es posible hacerlo como una funcion publica para poder llamarla en cualquier momento que quiera poner mi bandera en false

    ResponderEliminar
  28. Hola.

    Si te das cuenta es una propiedad del formulario y se está sobreescribiendo una propiedad createparams, por lo tanto tiene que estar en el formulario, pero si encuentras la manera de hacerlo en una función nos avisas.

    Saludos cordiales

    ResponderEliminar
  29. Me funcionó de manera excelente... Saludos y Mil gracias

    ResponderEliminar
  30. Excelente solución, muchas gracias por compartirla, funciona de maravilla.

    Saludos.

    ResponderEliminar
  31. Muy bien amigo era el plus q me faltaba. Excelente...!!!!!

    ResponderEliminar
  32. Mil gracias, funciona muy bien. Gran trabajo y aporte.

    ResponderEliminar
  33. Funciona perfectamente gracias por tu aportación
    Un saludo

    ResponderEliminar
  34. Gracias, amigo funciono de forma correcta!!

    ResponderEliminar
  35. Hola Wilfredo: Excelente tu código, funcionó perfecto y de una en Visual Studio 2013.
    Muchas gracias y felicitaciones desde Bs. As. Argentina.

    ResponderEliminar
  36. Que bueno que te haya servido, y gracias por visitar el blog.

    ResponderEliminar
  37. Respuestas
    1. Que bueno que aún te siga funcionando, ya lleva tiempo por allí. Saludos cordiales, y gracias por visitar el blog.

      Eliminar
  38. Respuestas
    1. Pues, luego de tantos años, que bueno que aún sirva.

      Gracias por visitar el blog, aunque bastante olvidado, pero ya pronto le pondré info nueva.

      Eliminar
  39. 07/12/2021 y Todavía funciona el Visual Basic 2022.... Muchas Gracias.....

    Este codigo es para evitar que se mueva un form.... ahí va...

    Public Class Form 1

    Private Declare Function GetSystemMenu Lib "USER32" ( _
    ByVal hwnd As Int32, _
    ByVal bRevert As Int32) As Int32

    Private Declare Function RemoveMenu Lib "USER32" ( _
    ByVal hMenu As Int32, _
    ByVal nPosition As Int32, _
    ByVal wFlags As Int32) As Int32

    Private Sub Form1_Load( _
    ByVal sender As Object, _
    ByVal e As EventArgs) Handles MyBase.Load

    Dim hMenu As Int32
    Dim RetVal As Int32
    Const MF_BYPOSITION As Int32 = &H400

    ' Obtenemos el manipulador del menú
    hMenu = GetSystemMenu(CInt(Me.Handle), 0)

    ' Eliminamos la opción Mover
    RetVal = RemoveMenu(hMenu, 1, MF_BYPOSITION)

    End Sub

    End Class

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

TextBox Solo Números con Punto Decimal en .NET

Procedimientos Almacenados en Access y Vb2005