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

Problemas con el close button de un formulario

Estas en el tema de Problemas con el close button de un formulario en el foro de .NET en Foros del Web. Hola, en el evento "closing" del form prinipal de una apliación tengo x código para controlar si el usuario pulsa el close button del form ...
  #1 (permalink)  
Antiguo 02/04/2007, 11:02
Avatar de freegirl
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: Catalonia
Mensajes: 4.334
Antigüedad: 20 años, 7 meses
Puntos: 156
Pregunta Problemas con el close button de un formulario

Hola,

en el evento "closing" del form prinipal de una apliación tengo x código para controlar si el usuario pulsa el close button del form por error, o bien porque quiere salir de la app.

El código que tengo en el evento closing del form es este:

Código PHP:
e.Cancel True
        
Try
            If 
cerrarApp <> "No" Then
                
If MessageBox.Show("¿Quieres salir de la aplicación?""Salir"MessageBoxButtons.YesNoMessageBoxIcon.Question) = DialogResult.Yes Then
                    Me
.registrarSAlida()
                    
clear()
                    
cerrarApp ""
                    
End
                
Else
                    
cerrarApp ""
                
End If
            
End If
        Catch 
ex As Exception
            MsgBox
(ex.ToString)
        
End Try 
con la variable "cerrarApp" controlo cuando se ha pulsado otros botones del formulario que si son para salir de la app.

El código anterior lo ejecuta bien. O sea, me controla correctamente cuando el usuario pulsa el close button del form y le pregunta si quiere salir.

El problema es que antes de hacerme la pregunta ya me ha limpiado los datasets, me ha destruído algunas variables, etc. Por lo cual si el usuario en verdad no quiere salir de la app le da errores de conexiones, datasets vacíos, etc.

Este problema sólo me surge con el close button del formulario.

Como puedo cancelar el evento close button más rápidamente o alguna forma mejor de que lo hago?


saludos

PD: no quiero deshabilitar o eliminar el close button.
  #2 (permalink)  
Antiguo 04/04/2007, 08:47
 
Fecha de Ingreso: octubre-2006
Mensajes: 29
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: Problemas con el close button de un formulario

Saludos... Yo tengo el mismo problema que tu tienes... Yo trabajo en una aplicacion web y la unica solucion que he conseguido es abrir la pantalla en modo fullscreen, de modo que el usuario no tenga acceso a esos botones.
No se si te sirva mi humilde opinion pero igual espero que lo soluciones... Si logras deshabilitar el boton de close, dejanos saber como lo hicistes...
  #3 (permalink)  
Antiguo 04/04/2007, 13:49
Avatar de jhonwilliams  
Fecha de Ingreso: marzo-2004
Ubicación: Copacabana - Colombia
Mensajes: 1.484
Antigüedad: 20 años, 2 meses
Puntos: 76
Re: Problemas con el close button de un formulario

Hola freegirl.

Yo realize algo similar con un DataTable y no se me pierden los datos, este es el code que use:

Código:
private void frmESPOY_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (tablaDatos.Rows.Count > 0)
            {
                DialogResult dg = MessageBox.Show("En este momento hay "+
                    tablaDatos.Rows.Count.ToString()+" defectos que no se han "+
                    "enviado al servidor, si cierra la aplicación estos se perderan.\n"+
                    "¿Desea cerrar la aplicación sin enviar los defectos?", Application.ProductName.ToString(),
                    MessageBoxButtons.YesNo, MessageBoxIcon.Error,MessageBoxDefaultButton.Button2);
                if (dg == DialogResult.Yes)
                {
                    Application.ExitThread();
                }
                else
                {
                    e.Cancel = true;
                }
            }
        }
Espero te sirve

Saludos
__________________
Si mi respuesta te ha ayudado, agradezco que me regales unos puntos de Karma XD.

"Una mujer sería encantadora si uno pudiera caer en sus brazos sin caer en sus manos." (Ambrose Bierce)
  #4 (permalink)  
Antiguo 07/04/2007, 05:01
Avatar de freegirl
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: Catalonia
Mensajes: 4.334
Antigüedad: 20 años, 7 meses
Puntos: 156
Re: Problemas con el close button de un formulario

Hola,

gracias por contestar.

Me olvidé decir algo primordial, que mi aplicación es mdi, por lo cual todos los form hijos abiertos perdían los valores, conexiones, datasets, etc.

Al final lo pude solucionar.


Declaré una variable pública para controlar cuando el usuario pulsa [X] del form padre, que es el form principal de la app. Cuando pulsa el botón [X] pongo a true la variable y cancelo el evento closing de todos los forms abiertos. Todo seguido aparece el mensaje de si quiere salir de la aplicación. Si es que "si", pues pongo a false la variable y de esta forma dejo que se ejecute el closing de los forms.

En un módulo público declaro:

Cita:
Public cancelClose as boolean
En el form principal (form padre):

Cita:
Protected Overrides Sub WndProc(ByRef m As Message)
If m.Msg = Convert.ToInt32("0x0112", 16) Then
If IntPtr.op_Equality(m.WParam, IntPtr.op_Explicit(Convert.ToInt32("0xF060", 16))) Then
cancelClose = True
End If
End If
MyBase.WndProc(m)
End Sub
En el evento closing de los forms hijos:

Cita:
If cancelClose = True Then
e.Cancel = True
cancelClose = False
End If
Saludos
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 19:47.