Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: _CrisiS_ en 9 Septiembre 2010, 05:48 am



Título: Se puede ignorar un Sub desde un boton?
Publicado por: _CrisiS_ en 9 Septiembre 2010, 05:48 am
Hola amigos tengo el siguiente Sub (procediminto si no me ekivoco q asi se llama)
Código:
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?


Título: Re: Se puede ignorar un Sub desde un boton?
Publicado por: BlackZeroX en 9 Septiembre 2010, 07:01 am
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
  1.  
  2. Private VCerrarIgnorando as boolean = False ' Hay que inicializarlo si no se queda me parece en Nothing!¡.
  3.  
  4.  

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

Código
  1.  
  2. VCerrarIgnorando = true
  3.  
  4.  

y corregimos de forma logica!¡.

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

Dulce Infierno Lunar


Título: Re: Se puede ignorar un Sub desde un boton?
Publicado por: BlackZeroX en 9 Septiembre 2010, 07:20 am
en vb6 vendria a ser esto!¡.

Código
  1.  
  2. Option Explicit
  3.  
  4. Private VCerrarIgnorando As Boolean ' Por Default esta en False
  5.  
  6. Private Sub cmdCommand1_Click()
  7.    VCerrarIgnorando = True
  8.    Unload Me
  9. End Sub
  10.  
  11. Private Sub Form_Unload(Cancel As Integer)
  12.    If VCerrarIgnorando Then Exit Sub
  13.    Cancel = Not MsgBox("¿Realmente desea cerrar?", vbYesNo + vbQuestion, "Confirmación") = vbYes
  14. End Sub
  15.  
  16.  

Dulce Lunas!¡.


Título: Re: Se puede ignorar un Sub desde un boton?
Publicado por: raul338 en 9 Septiembre 2010, 14:59 pm
Una forma un poco mas avanzada podria ser de borrar el handle al delegado y agregarle otro EventHandler :P

PD: Esto va en .net