none
ME.CLOSE NO ME CIERRA EL FORMUALRIO RRS feed

  • Pregunta

  • Muy buenos días, soy Harold:

    El problema es el siguiente he creado  en mi FORM3, un evento FORMCLOSING, con el siguiente código:

      If (e.CloseReason <> CloseReason.ApplicationExitCall) Then
                ' Cancelamos el cierre
                e.Cancel = True
            ElseIf e.CloseReason = CloseReason.ApplicationExitCall Then
                e.Cancel = False
            End If

    Luego en el mismo FORM3, tengo un ButtonSALIR, con el siguiente código:

     Dim salir As DialogResult
            salir = MessageBox.Show("¿Desea Cerrar el programa?", "Confirmar", MessageBoxButtons.YesNo, MessageBoxIcon.Question)

            If salir = Windows.Forms.DialogResult.Yes Then
                Me.Close()
            ElseIf salir = Windows.Forms.DialogResult.No Then
                Me.Visible = True
            End If

    El problema es que cuando corro el programa y undo en el ButtonSALIR, me muestra el mensage de confirmación, pero cuando undo "SI", no me cierra el FORM3, no me cierra el programa, no hace nada mejor dicho...Creo que el problema esta en el evento FORMCLOSING, cuando desabilito la opción de que se pueda cerrar directamente desde la ("X"), que se encuentra en la parte superior derecha de la ventana...necesito que alguien me ayude como puedo hacer para que cuando unda el ButtonSALIR y escoga "SI", se me cierre el programa...gracias

    martes, 26 de marzo de 2013 16:08

Respuestas

  • Hola

     Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
            'Dim opc As DialogResult = MsgBox("¿Desea salir de esta aplicación?", MsgBoxStyle.Question + MsgBoxStyle.YesNo, "Salir")
            Dim opc As DialogResult = MessageBox.Show("Desea salir de esta aplicación?", ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Information)
            If opc = Windows.Forms.DialogResult.Yes Then
                End
            Else
                e.Cancel = True
            End If
        End Sub


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    martes, 26 de marzo de 2013 18:53

Todas las respuestas

  • si pones un breakpoint en el evento formclosing valida que no este pasnado la ejecucion por la linea

    e.Cancel = True

    porque esto evitaria que se cierre el form

    es mas porque no comentas lo que esta en el formclosing asi lo validas


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    martes, 26 de marzo de 2013 16:26
  • Hola Leandro, lo que tengo en el evento FORMCLOSING, del FORM3, es lo siguiente:

      Private Sub FORMA3_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
            If (e.CloseReason <> CloseReason.ApplicationExitCall) Then
                ' Cancelamos el cierre
                e.Cancel = True
            ElseIf e.CloseReason = CloseReason.ApplicationExitCall Then
                e.Cancel = False
            End If
        End Sub

    Ahora lo que tengo en el ButtonSALIR del FORM3, es

      Private Sub ButtonSALIR3_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonSALIR3.Click
            Dim salir As DialogResult
            salir = MessageBox.Show("¿Desea Cerrar el programa?", "Confirmar", MessageBoxButtons.YesNo, MessageBoxIcon.Question)

            If salir = Windows.Forms.DialogResult.Yes Then
                Me.Close()
            ElseIf salir = Windows.Forms.DialogResult.No Then
                Me.Visible = True
            End If
        End Sub

    Pero no me sirve el Me.Close() cuando escogo la opción (SI), en el momento que estoy correindo el programa...yo soy muy un principinate en esto, te agradeceria si me ayudaras Leandro y como te dije es por el  evento FORMCLOSING, del FORM3, que no me valida el Me.Close(), del ButtonSALIR , porque ya lo probe quitando dicho evento, aunque es obvia dicha razón que te he dicho...gracias

    martes, 26 de marzo de 2013 16:42
  • Hola Harold

    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArg… Handles Me.FormClosing
    
    Dim opc As DialogResult = MsgBox("¿Desea salir de esta aplicación?", MsgBoxStyle.Question + MsgBoxStyle.YesNo, "Salir")
    
    If opc = Windows.Forms.DialogResult.Yes Then
    End
    Else
    e.Cancel = True
    End If
    
    End Sub

    Y en tu boton Salir

    Me.Close


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    martes, 26 de marzo de 2013 18:08
  • Pedro Avila, te cuento que tu solución me funciono de maravilla, pero quisiera pedirte si el favor como lo haría con un  MessageBox, ya que he intentado hacerlo y no he podido..gracias
    martes, 26 de marzo de 2013 18:42
  • Hola

     Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
            'Dim opc As DialogResult = MsgBox("¿Desea salir de esta aplicación?", MsgBoxStyle.Question + MsgBoxStyle.YesNo, "Salir")
            Dim opc As DialogResult = MessageBox.Show("Desea salir de esta aplicación?", ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Information)
            If opc = Windows.Forms.DialogResult.Yes Then
                End
            Else
                e.Cancel = True
            End If
        End Sub


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    martes, 26 de marzo de 2013 18:53
  • Excelente Pedro, muchas gracias por tu respuesta te lo agradezco....
    martes, 26 de marzo de 2013 18:55