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?
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
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
VCerrarIgnorando = true
y corregimos de forma logica!¡.
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
en vb6 vendria a ser esto!¡.
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!¡.
Una forma un poco mas avanzada podria ser de borrar el handle al delegado y agregarle otro EventHandler :P
PD: Esto va en .net