Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

mekanis

Fechar programa no X

Mensagens Recomendadas

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  :mad:.

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

Obrigado, cumps

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.