Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

mekanis

Fechar programa no X

Recommended Posts

mekanis

Boas pessoal,

Tenho mais uma dúvida  😳

tenho este código:

Private Sub sair() Handles SairToolStripMenuItem.Click, Me.FormClosing
        If MessageBox.Show("Deseja Sair da Aplicação?", "Sair", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
            Application.Exit()
        End If
    End Sub

a minha intenção era poder fechar no X, ali o do canto  :thumbsup: , e um outro botão. mas com esse código que fiz aparece duas vezes a messagebox  😡 .

Já tentei de tudo e não há meio de dar com o bixo, podem-me ajudar?

Obrigado, cumps

Share this post


Link to post
Share on other sites
softklin

Quando carregas nesse tal botão, em vez de teres o evento a apontar para a função sair, coloca apenas

Me.close()

Essa linha irá então desencadear o evento FormClosing, que já tens associado à função sair. Ou seja, nessa função muda a assinatura para

Private Sub sair() Handles Me.FormClosing


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
bioshock
    Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles Me.Closing
        If MessageBox.Show("Deseja Sair da Aplicação?", "Sair", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
            e.Cancel = False
        Else
            e.Cancel = True
        End If
    End Sub

Share this post


Link to post
Share on other sites
kazzx

viva,

eu para essa situação costumo adaptar um método bastante simples e que funciona sempre.

para isso:

declaras uma variável global:

 Private sair As Boolean = True 

no formclosing:

Private Sub frm1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        Dim resp As MsgBoxResult
        If sair Then
            resp = MsgBox("Deseja mesmo sair?", _
                          MsgBoxStyle.YesNo + MsgBoxStyle.Question, "Sair")
            If resp = MsgBoxResult.No Then
                e.Cancel = True
            End If
        End If
    End Sub

no botão:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Me.Close()
    End Sub

espero ter ajudado,

cumps :thumbsup:

Share this post


Link to post
Share on other sites
jpaulino

Deves verificar qual a CloseReason (sem ser necessário o uso de variáveis auxiliares).

Exemplo:

  Private Sub SairToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SairToolStripMenuItem.Click
    Me.Close()
  End Sub

  Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    If e.CloseReason <> CloseReason.ApplicationExitCall Then

      If MessageBox.Show("Deseja Sair da Aplicação?", "Sair", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
        Application.Exit()
      Else
        e.Cancel = True
      End If

    End If
  End Sub

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.