none
Dúvida referente a fechar um form e chamar outro

    Question

  • Bom dia...

    Preciso de um help no seguinte processo...

    Tenho um formulário 1 com uma figura... quando eu clicar na figura eu quero fechar o formulário 1 e abrir o formulário 2 o qual tbem tem uma figura, e fazer o mesmo processo...qdo clicar na figura do formulário 2, fechar o mesmo e abrir o formulário 1...

    no evento click do formulário estou fazendo assim:

    Dim form1 As New Frm1
    Dim form2 As New Frm2

    form2 .Dispose()
    form1 .ShowDialog()
    form1 .Dispose()

    mas não está fechando...apenas está chamando o outro..sobrepondo o primeiro...
    será que alguem pode me ajudar por favor?

    Friday, February 16, 2007 1:00 PM

Answers

  • você terá que chamar o formulário seguinte antes de fechar o seu atual... e pra isso não poderá ser showdialog e sim, a penas show...

     

    então ficaria assim estando no form1:

     

    Form2.show()

    Form1.close()

     

    e vice versa...

     

    abraço,

     

    Friday, February 16, 2007 1:08 PM
  • Existe algumas considerações. Se o formulário 1 for o formulário principal do projeto, ao fechá-lo você vai finalizar a aplicação. Outra coisa, se a cada click instanciar um novo objeto do form que você quer abir, você não vai está tratando com o form que está realmente aberto e sim com a nova instância dele. Então, te aconselho a apenas esconde o Form1. Mas é claro que existem outras formas. Veja:

    'Form1

    Public Shared Form1Ref As Form1 'Variável publica compartilhada que receberá a instância atual do Form1

    'Evento clique da figura

    Form1Ref = Me
    Dim f As New Form2
    f.Show()
    Me.Hide()

    'Form2, evento clique da figura

    Form1.Form1Ref.Show()
    Me.Close()

    Friday, February 16, 2007 1:15 PM
    Moderator
  • Obrigada Leonardo, o teu exemplo deu certo...

    realmente eu estava tratando como um novo objeto e nao tinha com dar certo mesmo...

     Abraços

    Friday, February 16, 2007 3:35 PM
  • Obrigada pela dica Vitor, mas da maneira como vc disse nao funcionou...

    acabei usando um exemplo que o Leonardo repassou...

    em todo caso...valeu mesmo

    Friday, February 16, 2007 3:36 PM

All replies

  • você terá que chamar o formulário seguinte antes de fechar o seu atual... e pra isso não poderá ser showdialog e sim, a penas show...

     

    então ficaria assim estando no form1:

     

    Form2.show()

    Form1.close()

     

    e vice versa...

     

    abraço,

     

    Friday, February 16, 2007 1:08 PM
  • Existe algumas considerações. Se o formulário 1 for o formulário principal do projeto, ao fechá-lo você vai finalizar a aplicação. Outra coisa, se a cada click instanciar um novo objeto do form que você quer abir, você não vai está tratando com o form que está realmente aberto e sim com a nova instância dele. Então, te aconselho a apenas esconde o Form1. Mas é claro que existem outras formas. Veja:

    'Form1

    Public Shared Form1Ref As Form1 'Variável publica compartilhada que receberá a instância atual do Form1

    'Evento clique da figura

    Form1Ref = Me
    Dim f As New Form2
    f.Show()
    Me.Hide()

    'Form2, evento clique da figura

    Form1.Form1Ref.Show()
    Me.Close()

    Friday, February 16, 2007 1:15 PM
    Moderator
  • Obrigada Leonardo, o teu exemplo deu certo...

    realmente eu estava tratando como um novo objeto e nao tinha com dar certo mesmo...

     Abraços

    Friday, February 16, 2007 3:35 PM
  • Obrigada pela dica Vitor, mas da maneira como vc disse nao funcionou...

    acabei usando um exemplo que o Leonardo repassou...

    em todo caso...valeu mesmo

    Friday, February 16, 2007 3:36 PM
  • Pessoal tenho um form de login, e após clicar no botão OK ele abre o form de menu, para isso uso o código abaixo

        Dim filho1 As New menu
                    filho1.Show()
                    Me.Hide()
    Então eu só escondi o form de login
    Ao fechar a aplicação se for no gerenciador de tarefas\processos vejo a aplicação ainda rodando. será por causa do form de login que ainda esta aberto?

    Como posso resolver isso

    Ao fechar a aplicação estou usando
     Private Sub menu_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
            If MessageBox.Show("Deseja realmente sair do Sistema ? ", "Encerrar", MessageBoxButtons.YesNo, MessageBoxIcon.Stop) = DialogResult.No Then
                e.Cancel = True
            End If
        End Sub
    Tuesday, June 17, 2008 7:44 PM