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