none
Fechar varios forms deixando apenas um aberto RRS feed

  • Pergunta

  • Boas pessoal
    Alguem me diz como posso ao clicar um botao fechar todos os forms e deixar apenas o form principal aberto?
    Eu estava a ir por este caminho, mas penso que não é assim

    For i = 0 To My.Application.OpenForms.Count - 1
                If My.Application.OpenForms.Item(i).Name <> Principal.Show Then
                    My.Application.OpenForms.Item(i).Close()
                End If
            Next

    sexta-feira, 25 de abril de 2014 13:12

Respostas

  • Bem eu não testei o procedimento do daniel acredito que o dele funcione, mais se caso vc não conseguir tenta esse daqui>>>

    Elimina:
            Try
                For Each frm As Form In My.Application.OpenForms
    
                    If Not frm.GetType() = GetType(Form1) Then
                        frm.Close()
                    End If
                Next
            Catch ex As Exception
                GoTo Elimina
            End Try


    • Editado Jonnathanvb sexta-feira, 25 de abril de 2014 16:46
    • Sugerido como Resposta Jonnathanvb sexta-feira, 25 de abril de 2014 18:10
    • Marcado como Resposta Giovani Cr segunda-feira, 28 de abril de 2014 16:18
    sexta-feira, 25 de abril de 2014 16:46

Todas as Respostas

  • amigo o codigo tá quase lá,

    tenta assim:

    For Each frm As Form In My.Application.OpenForms

    ' quando o tipo do formulario aberto não for o mesmo tipo do form1 então ele fecha o form If not frm.GetType() = GetType(form1) Then frm.close End If Next


    • Sugerido como Resposta Jonnathanvb sexta-feira, 25 de abril de 2014 13:32
    sexta-feira, 25 de abril de 2014 13:26
  • Jonnathanvb deu me este erro A colecção foi modificada; a operação de enumeração poderá não ser executada.
    sexta-feira, 25 de abril de 2014 14:35
  • Vai dar erro pq vc altera a coleção no momento do laço, faça um loop decrescente usando um for :

     For i As Integer = My.Application.OpenForms.Count - 1 To 0 Step -1
                If My.Application.OpenForms.Item(i) IsNot Me Then
                    My.Application.OpenForms.Item(i).Close()
                End If
            Next i
    Veja que a condição é feche todos os forms abertos menos este que é o Me

    sexta-feira, 25 de abril de 2014 14:53
  • Bem eu não testei o procedimento do daniel acredito que o dele funcione, mais se caso vc não conseguir tenta esse daqui>>>

    Elimina:
            Try
                For Each frm As Form In My.Application.OpenForms
    
                    If Not frm.GetType() = GetType(Form1) Then
                        frm.Close()
                    End If
                Next
            Catch ex As Exception
                GoTo Elimina
            End Try


    • Editado Jonnathanvb sexta-feira, 25 de abril de 2014 16:46
    • Sugerido como Resposta Jonnathanvb sexta-feira, 25 de abril de 2014 18:10
    • Marcado como Resposta Giovani Cr segunda-feira, 28 de abril de 2014 16:18
    sexta-feira, 25 de abril de 2014 16:46
  • Obriga funcionou Jonnathanvb :)
    sexta-feira, 25 de abril de 2014 17:12
  • Não esqueça de marca como resposta o comentário daquele que trouxe a solução, para finalizar sua thread e outros possa se beneficia.
    sexta-feira, 25 de abril de 2014 18:12