none
Desactivar el boton cerrar de un formulario windows

    Question

  • Quisiera saber como puedo hacer para desactivar el boton cerrar de un Formulario windows en C# 2005, que aparesca desactivado o simplemente que no funcione.
    Monday, August 13, 2007 5:26 PM

Answers

  • Hola,

     

    prueba con esto:

     

     

    http://ryanfarley.com/blog/archive/2004/04/12/526.aspx

     

    Code Snippet

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Text;

    using System.Windows.Forms;

    using System.Runtime.InteropServices;

    namespace WindowsApplication1

    {

    public partial class Form1 : Form

    {

    [DllImport("user32.dll", EntryPoint="GetSystemMenu")]

    private static extern IntPtr GetSystemMenu(IntPtr hwnd, int revert);

    [DllImport("user32.dll", EntryPoint="GetMenuItemCount")]

    private static extern int GetMenuItemCount(IntPtr hmenu);

    [DllImport("user32.dll", EntryPoint="RemoveMenu")]

    private static extern int RemoveMenu(IntPtr hmenu, int npos, int wflags);

    [DllImport("user32.dll", EntryPoint="DrawMenuBar")]

    private static extern int DrawMenuBar(IntPtr hwnd);

    private const int MF_BYPOSITION = 0x0400;

    private const int MF_DISABLED = 0x0002;

    public Form1()

    {

    InitializeComponent();

    }

    private void Form1_Load(object sender, EventArgs e)

    {

    IntPtr hmenu = GetSystemMenu(this.Handle, 0);

    int cnt = GetMenuItemCount(hmenu);

    // remove 'close' action

    RemoveMenu(hmenu, cnt - 1, MF_DISABLED | MF_BYPOSITION);

    // remove extra menu line

    RemoveMenu(hmenu, cnt - 2, MF_DISABLED | MF_BYPOSITION);

    DrawMenuBar(this.Handle);

    }

    }

    }

     

     

    Monday, August 13, 2007 7:43 PM

All replies

  • Hola,

     

    prueba con esto:

     

     

    http://ryanfarley.com/blog/archive/2004/04/12/526.aspx

     

    Code Snippet

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Text;

    using System.Windows.Forms;

    using System.Runtime.InteropServices;

    namespace WindowsApplication1

    {

    public partial class Form1 : Form

    {

    [DllImport("user32.dll", EntryPoint="GetSystemMenu")]

    private static extern IntPtr GetSystemMenu(IntPtr hwnd, int revert);

    [DllImport("user32.dll", EntryPoint="GetMenuItemCount")]

    private static extern int GetMenuItemCount(IntPtr hmenu);

    [DllImport("user32.dll", EntryPoint="RemoveMenu")]

    private static extern int RemoveMenu(IntPtr hmenu, int npos, int wflags);

    [DllImport("user32.dll", EntryPoint="DrawMenuBar")]

    private static extern int DrawMenuBar(IntPtr hwnd);

    private const int MF_BYPOSITION = 0x0400;

    private const int MF_DISABLED = 0x0002;

    public Form1()

    {

    InitializeComponent();

    }

    private void Form1_Load(object sender, EventArgs e)

    {

    IntPtr hmenu = GetSystemMenu(this.Handle, 0);

    int cnt = GetMenuItemCount(hmenu);

    // remove 'close' action

    RemoveMenu(hmenu, cnt - 1, MF_DISABLED | MF_BYPOSITION);

    // remove extra menu line

    RemoveMenu(hmenu, cnt - 2, MF_DISABLED | MF_BYPOSITION);

    DrawMenuBar(this.Handle);

    }

    }

    }

     

     

    Monday, August 13, 2007 7:43 PM
  • Gracias Santi Madrid te devo una, es exactamente lo que queria me has salvado la vida gracias de verdad.
    Monday, August 13, 2007 7:54 PM
  • Buenas.

    Jasnet, si la respuesta de santi es la que buscabas, marcala como correcta. Para ayudar a ayudar Wink
    Saturday, August 18, 2007 10:33 PM
  • Yo quiero hacer eso mismo, pero en una aplicación para Windows Mobile, cuando ejecutoel código me sale el siguiente error:

    "No se puede encontrar el archivo DLL PInvoke 'user32.dll'."

    He probado a ejecutarlo en una aplicación en Windows y no tengo problema.

    ¿Se os ocurre porque puede ser?

    Gracias
    Thursday, January 15, 2009 9:32 AM
  • Hola Zika, no tuve contacto con Windows Mobile, pero seguro que es por que dicha libreria a la que hace referencia esa parte del codigo, no existe en este OS. Esta libreria pertenece a las famos libreria API de Windows. Posiblemente haya una libreria que sea su equivalencia en Windows Mobile.

     

     

    Saludos.

    Monday, January 19, 2009 1:10 PM
  • He mirado y en otros foros dice que si que existe en Windows Mobile para Pocket PC,
    muchas gracias de todas formas, seguire buscando


    Saludos
    Thursday, January 29, 2009 11:23 AM
  • Hola,

    prueba con esto:

    http://ryanfarley.com/blog/archive/2004/04/12/526.aspx

    Code Snippet

    using

    System;

    using

    System.Collections.Generic;

    using

    System.ComponentModel;

    using

    System.Data;

    using

    System.Drawing;

    using

    System.Text;

    using

    System.Windows.Forms;

    using

    System.Runtime.InteropServices;

    namespace

    {

    WindowsApplication1public partial class Form1 : Form

    {

    [

    [

    [

    [

    {

    InitializeComponent();

    }

    {

    DllImport("user32.dll", EntryPoint="GetSystemMenu")]private static extern IntPtr GetSystemMenu(IntPtr hwnd, int revert);DllImport("user32.dll", EntryPoint="GetMenuItemCount")]private static extern int GetMenuItemCount(IntPtr hmenu);DllImport("user32.dll", EntryPoint="RemoveMenu")]private static extern int RemoveMenu(IntPtr hmenu, int npos, int wflags);DllImport("user32.dll", EntryPoint="DrawMenuBar")]private static extern int DrawMenuBar(IntPtr hwnd);private const int MF_BYPOSITION = 0x0400;private const int MF_DISABLED = 0x0002;public Form1()private void Form1_Load(object sender, EventArgs e)IntPtr hmenu = GetSystemMenu(this.Handle, 0);int cnt = GetMenuItemCount(hmenu);// remove 'close' action

    RemoveMenu(hmenu, cnt - 1, MF_DISABLED | MF_BYPOSITION);

    // remove extra menu line

    RemoveMenu(hmenu, cnt - 2, MF_DISABLED | MF_BYPOSITION);

    DrawMenuBar(

    }

    }

    }

    this.Handle);

    Excelente ! Funciona a la perfeccion !!

    Monday, February 27, 2012 7:28 PM
  • Buenas, se que este tema ya tiene sus años pero aun asi espero que me puedan ayudar, el codigo es perfecto, funciona justamente como lo necesito, pero necesito saber también como habilitarlo, es que el botón lo tengo que tener deshabilitado solo si se cumplen ciertos requisitos, he buscado mucho pero no doy con la respuesta, alguien podria ayudarme un poco con eso ?
    Thursday, September 13, 2012 3:20 PM