none
Evento form closing RRS feed

  • Pergunta

  • Boas pessoal, 
    Estou a tentar usar o form closing mas em vez de ser atraves de uma msgbox é atraves de um form que eu crio, ele funciona-me, mas depois queria ter um botão sair e o botão sair está a fazer conflito com o form closing.
    ERRO: O formulário que já está visível não pode ser apresentado como uma caixa de diálogo modal. Defina a propriedade visível do formulário como falsa antes de chamar showDialog.

    [code=vb]
    'funcao fica no form que criei
    Public Function meushowdialog() As Integer
            Dim i As Integer = 0
            Me.ShowDialog()
            Return i
        End Function

    [/code]
    [code=vb]
    Private Sub Form2_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        
            If SairProjeto.meushowdialog() = 1 Then

                e.Cancel = True
            End If

        End Sub

     [/code]
    sábado, 10 de maio de 2014 11:08

Todas as Respostas

  • Testa o retorno da Dialog utilizando o DialogResult

    Gilson Joanelo - Desenvolvedor Web

    sábado, 10 de maio de 2014 22:12
  • Gilson está me a dizer para fazer assim : Me.DialogResult() ?? É que assim não me reconhece
    domingo, 11 de maio de 2014 09:41
  • DialogResult é o retorno da função Me.ShowDialog()


    Gilson Joanelo - Desenvolvedor Web

    e pelo que vi no teu código, nem tem muito a ver com o tipo de retorno, o que esta ocorrendo é o seguinte:

    O código abaixo está exibindo o showDialog e tem um return de "i" que inicialmente é "0" e no closing somente é executado alguma coisa caso o retorno seja "=1", poderia tentar o seguinte código

    'funcao fica no form que criei
    Public Function meushowdialog() As DialogResult
      Return Me.ShowDialog()
    End Function
    
    Private Sub Form2_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        If SairProjeto.meushowdialog() = DialogResult.OK Then
        'Cancela o sair do sistema  
        e.Cancel = True
      End If
    End Sub

    domingo, 11 de maio de 2014 16:27
  • Dá-me o mesmo erro com a sua alteração. No botão sair eu digo apenas me.close, estará certo??
    domingo, 11 de maio de 2014 17:59
  • Me.Close não encerra a plicação, se form o form, pode utilizar também o Form.Close.

    Gilson Joanelo - Desenvolvedor Web

    quarta-feira, 14 de maio de 2014 01:07
  • Mas ao meter form.close no botao da erro
    quarta-feira, 14 de maio de 2014 20:11
  • Entendi, 

    A tua função SairProjeto.meushowdialog() chama um Me.ShowDialog, o erro que você relatou é que o sistema tentou exibir um form já visível.

    Fiz o seguinte modelo e funcionou.

    1- Criei o form principal, dentro do form principal, coloquei um botão com o seguinte código para chamar o Form2.

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim from As Form2
            from = New Form2()
            from.ShowDialog()
        End Sub

    2 - No Form2, adicionei um botão para fechar o Form2.

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



    Gilson Joanelo - Desenvolvedor Web

    quinta-feira, 15 de maio de 2014 00:03
  • Mas eu tenho o meu botao Sair no form principal. O que me esta acontecer penso que seja isto o formulário já está aberto e que foi escondido através da propriedade hide. e tenho de definir a propriedade como falsa, mas nao sei como.

    sábado, 17 de maio de 2014 22:46
  • Toda vez que você quer abrir o form você dá new Form isso?

    O botão sair é para encerrar o sistema?

    se for para encerrar o sistema pode utilizar a seguinte função para destruir todos os forms abertos na memoria.

    For i = System.Windows.Forms.Application.OpenForms.Count - 1 To 1 Step -1
        Dim form As Form = System.Windows.Forms.Application.OpenForms(i)
        form.Close()
    Next i

    depois disso Me.Close() ou Application.exit()


    Gilson Joanelo - Desenvolvedor Web

    segunda-feira, 19 de maio de 2014 23:49