Foros del Web » Programación para mayores de 30 ;) » .NET »

Quitr boton cerrar de un winform..

Estas en el tema de Quitr boton cerrar de un winform.. en el foro de .NET en Foros del Web. hola a todos, pues la cuestion es que le he quitado el boton cerrar a un formulario porque kiero que la accion se realice especificamente ...
  #1 (permalink)  
Antiguo 11/10/2008, 23:34
 
Fecha de Ingreso: octubre-2007
Mensajes: 273
Antigüedad: 16 años, 6 meses
Puntos: 5
Quitr boton cerrar de un winform..

hola a todos, pues la cuestion es que le he quitado el boton cerrar a un formulario porque kiero que la accion se realice especificamente cuando se presiona la tecla ESC; la parte de quitar el boton no tuvo problem, ya alguien habia tenido la misma curiosidad que yo, mi problema es que las formas clasicas de cerrar el formulario al preguntar por la tecla que se oprime no me quieren funcionar.

alguien me puede ayudar con esto ??

aki esta el codigo de mi formulario, lease echenle una ojeada y diganme donde esta el errorx


Código:
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
    {
        public Form1()
        {
            InitializeComponent();
            this.DisableCloseButton(this.Handle.ToInt32());
        }


        //Declaración de constantes necesarias (valores en hexadecimal)
        private const int MF_BYPOSITION = 0x400;
        private const int MF_REMOVE = 0x1000;
        private const int MF_DISABLED = 0x2;

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

        //Quitar elementos del menú de sistema
        [DllImport("user32.Dll")]
        public static extern IntPtr RemoveMenu(int hMenu, int nPosition, long wFlags);

        //Obtener el menú de sistema
        [DllImport("User32.Dll")]
        public static extern IntPtr GetSystemMenu(int hWnd, bool bRevert);

        //Obtener el número de elementos del menú de sistema
        [DllImport("User32.Dll")]
        public static extern IntPtr GetMenuItemCount(int hMenu);

        //Redibujar la barra de título de la ventana
        [DllImport("User32.Dll")]
        public static extern IntPtr DrawMenuBar(int hwnd);

        //Método que desactiva el botón X (cerrar)
        public void DisableCloseButton(int hWnd)
        {
            
            IntPtr hMenu;
            IntPtr menuItemCount;
            //Obtener el manejador del menú de sistema del formulario
            hMenu = GetSystemMenu(hWnd, 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 | MF_BYPOSITION);
            //Quitar el ítem Separador, el penúltimo de ese menú, entre Maximizar y Cerrar
            RemoveMenu(hMenu.ToInt32(), menuItemCount.ToInt32() - 2, MF_DISABLED | MF_BYPOSITION);
            //Redibujar la barra de menú
            DrawMenuBar(hWnd);
        }

        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyData == Keys.Cancel)
            {
                DialogResult dialog = MessageBox.Show("Se perderán los datos que no han sido salvados.\n Desea Salir?", "EXIT", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                if (dialog == DialogResult.Yes)
                    Application.Exit();
            }
        }

    }
}
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:11.