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

set#1

Abrir e Fechar formulários

7 mensagens neste tópico

- Me.Close : Se for o form que se está a mandar fechar a si proprio

- Form.Close : Se tiveres a tentar fechar um form através de outro e substituis o "Form" pelo nome do form que queres mesmo fechar.

Alo. Vao me perdoar por ressuscitar este tópico, mas estou a ter problemas com essa implementacao. Simplesmente das duas maneiras não esta a funcionar:

frmLogin

Private Sub btEntrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btEntrar.Click
        Dim utilizadoresAdapter As New LoginDataSet2TableAdapters.t_utilizadorTableAdapter
        Dim utilizadores As LoginDataSet2.t_utilizadorDataTable
        'Dim utilizador As LoginDataSet2.t_utilizadorRow
        Dim pac As New frmPaciente

        'se o txtNome esta em branco...
        If txtNome.Text.Trim = "" Then
            MessageBox.Show("Informe seu Usuario!", "Usuario", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            txtNome.Focus()
            Exit Sub
        End If

        'se o txtPassword esta em branco...
        If txtPassword.Text.Trim = "" Then
            MessageBox.Show("Informe a sua senha!", "Senha", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            txtPassword.Focus()
            Exit Sub
        End If

        'se a combobox esta em branco
        If ComboBox1.Text.Trim = "" Then
            MessageBox.Show("Selecione o modo de Login", "Login", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            ComboBox1.Focus()
            Exit Sub
        End If

        utilizadores = utilizadoresAdapter.VerificaUser(Me.txtNome.Text, Me.txtPassword.Text, Me.ComboBox1.Text)
        'MsgBox(Me.ComboBox1.SelectedItem)
        'MsgBox(Me.ComboBox1.Text)

        If (utilizadores.Rows.Count <= 0) Then
            MessageBox.Show("Utilizador nao autenticado!", "Login errado", MessageBoxButtons.OK)
            txtNome.Clear()
            txtPassword.Clear()
        Else
            MessageBox.Show("Utilizado autenticado", "Bem Vindo", MessageBoxButtons.OK)
            frmPaciente.Show()
            Me.Close()
        End If
    End Sub

Deve fechar o form frmLogin e abrir o form frmPaciente depois de autenticar o usuário.

Com o me.hide() funciona nao fecha.

Fazendo fechar noutro formulário também não funciona:

frmPaciente

 Private Sub frmPaciente_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        frmLogin.Close()
        Me.T_contactoTableAdapter.Fill(Me.BD_TL2009DataSet.t_contacto)
        'TODO: This line of code loads data into the 'BD_TL2009DataSet.t_bairro' table. You can move, or remove it, as needed.
        Me.T_bairroTableAdapter.Fill(Me.BD_TL2009DataSet.t_bairro)
        'TODO: This line of code loads data into the 'BD_TL2009DataSet.t_distrito' table. You can move, or remove it, as needed.
        Me.T_distritoTableAdapter.Fill(Me.BD_TL2009DataSet.t_distrito)
        'TODO: This line of code loads data into the 'BD_TL2009DataSet.t_adulto' table. You can move, or remove it, as needed.
        Me.T_adultoTableAdapter.Fill(Me.BD_TL2009DataSet.t_adulto)
        'TODO: This line of code loads data into the 'BD_TL2009DataSet.t_paciente' table. You can move, or remove it, as needed.
        Me.T_pacienteTableAdapter.Fill(Me.BD_TL2009DataSet.t_paciente)
End Sub

Onde posso estar a falhar?

Obrigado

(((Peace&Love)))

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Presumo que o teu formulário frmLogin é o primeiro, ou seja pelo qual a aplicação inicia, sendo esse o caso tens 2 alternativas, usas o hide e qdo fechares o formulário principal mandas fechar esse tambem, a segunda hipótese e mexendo nas configurações do projecto para terminar a aplicação só quando forem fechados todos os formulários, uma vez que por defeito a aplicação termina quando se termina o primeiro formulário.

Como primeira Solução podes fazer isto:

'este código só como exemplo
'nao testei para ver se funciona mas será algo do género
'este codigo pode ser usado no evento click do botão entrar do teu frmLogin

Me.Hide()

Dim form As New frmPaciente

Dim result As DialogResult = form.ShowDialog

If result = Windows.Forms.DialogResult.Cancel Then
    Me.Close()
Else
    Me.Visible = True
    Me.Enabled = True
End If

'No frmPaciente não necessitas de alterar nada mas por exemplo:
'se quiseres fazer lougout e trocar de utilizador
'é só usares o seguinte:

Private Sub btnLogout_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
     Me.DialogResult = Windows.Forms.DialogResult.Abort
End Sub

'Neste caso usem um botao para chamar o evento de DialogResult q ao ser abort
'vai fazer com q o frmLogin volte a aparecer
'mas se por exemplo fizeres isto:

Private Sub btnSair_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
    Me.Close()
End Sub

' a aplicação será terminada

O segundo Método:

Abres as Propriedades do projecto

No "Shutdown mode:" escolhes "When Last Form Closes"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Apesar das sugestões do lordnins serem muito provavelmente as melhores para ti, apresento-te ainda uma outra. Podes criar, numa macro, a Sub Main, que pode ser executada no lugar de uma qualquer form inicial. A partir da Main, podes criar uma instância da frmLogin, e se esta devolver um resultado apropriado, criar então instâncias das restantes forms.

Uma outra solução, baseada na anterior mas mais fácil de implementar, seria fazeres isto mas no Load da tua form principal. Por exemplo, vou assumir que a tua frmPaciente é a principal, apesar de ser a segunda a aparecer. No Load da frmPaciente podes fazer o seguinte:

' Assumindo que a propriedade visible da frmPaciente está definida como False

Dim form as frmLogin

If form.ShowDialog() <> Windows.Forms.DialogResult.Ok Then
     Me.Close       'se o login falhar, então fecha a form principal e consigo a aplicação
End If

' se o código chegar aqui então o utilizador foi validado
Me.Visible = True

A frmPaciente, neste caso, tem de ser a tua form inicial no project.

Tens várias alternativas :(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

@ lordnins e @ Phear99 valeu as dicas. Deu certo!!

Obrigado!!

(((Peace&Love)))

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

@ set#1

Carrega em Topico Solved no fundo da página à esquerda para dar como tópico resolvido  :)

0

Partilhar esta mensagem


Link 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