Se puede ignorar un Sub desde un boton?

Iniciado por _CrisiS_, 9 Septiembre 2010, 05:48 AM

0 Miembros y 1 Visitante están viendo este tema.

_CrisiS_

Hola amigos tengo el siguiente Sub (procediminto si no me ekivoco q asi se llama)

Private Sub IU_Agregar_Paginas_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        'Procedimiento de ventana de confirmacion de salida
        If (e.CloseReason = CloseReason.UserClosing) Then
            Dim R As DialogResult = MessageBox.Show("¿Realmente desea cerrar?", "Confirmación", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
            If R = Windows.Forms.DialogResult.Yes Then
            Else : e.Cancel = True
            End If
        End If
    End Sub

El cual sirve que detecta cuando se cierra el formulario manda un mensaje de confirmación.

Ahora quisiera saber si al hacer clic en un boton ignore ese "metodo" y cierre defrente. como se podria hacer?

BlackZeroX

#1
Edito: Correcciones

Usa una variable publica Privada (En el Header) dentro del Form y e el evento click del boton antes de cerrar cambias el valor a true ( por defecto deberia estar en false, si no la inicializas al mismo ), posteriormente en el EVENTO FormClosing verificas con un if negando es decir inviertes con Not e ignoras!¡.

Declara esta variable en tipo boolean
Código (Vbnet) [Seleccionar]


Private VCerrarIgnorando as boolean = False ' Hay que inicializarlo si no se queda me parece en Nothing!¡.



en el evento del boton Esactamente arriba de donde mandas a cerrar el Form

Código (vbnet) [Seleccionar]


VCerrarIgnorando = true



y corregimos de forma logica!¡.

Código (vbnet) [Seleccionar]


Private Sub IU_Agregar_Paginas_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
   if VCerrarIgnorando then exit sub
'    if not e.CloseReason = CloseReason.UserClosing then exit sub ' creo que no tiene caaso alguno!¡.
   e.Cancel=not MessageBox.Show("¿Realmente desea cerrar?", "Confirmación", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes
End Sub



Dulce Infierno Lunar
The Dark Shadow is my passion.

BlackZeroX

#2
en vb6 vendria a ser esto!¡.

Código (Vb) [Seleccionar]


Option Explicit

Private VCerrarIgnorando As Boolean ' Por Default esta en False

Private Sub cmdCommand1_Click()
   VCerrarIgnorando = True
   Unload Me
End Sub

Private Sub Form_Unload(Cancel As Integer)
   If VCerrarIgnorando Then Exit Sub
   Cancel = Not MsgBox("¿Realmente desea cerrar?", vbYesNo + vbQuestion, "Confirmación") = vbYes
End Sub



Dulce Lunas!¡.
The Dark Shadow is my passion.

raul338

Una forma un poco mas avanzada podria ser de borrar el handle al delegado y agregarle otro EventHandler :P

PD: Esto va en .net