Jump to content

Recommended Posts

Posted

- 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)))

Posted

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"

Posted

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 😞

Programei: VB6, VB.NET, ANSI C, C++, HTML, XHTML, CSS, PHP, ASP, HASKELL, JAVAI'm so good that I quit because the compiler is slower than me.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.