set#1 Posted August 14, 2009 at 01:24 PM Report #283285 Posted August 14, 2009 at 01:24 PM - 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)))
set#1 Posted August 14, 2009 at 01:29 PM Author Report #283286 Posted August 14, 2009 at 01:29 PM Lembrar que estou a usar VS 2005 Obrigado (((Peace&Love)))
lufinima Posted August 14, 2009 at 06:33 PM Report #283320 Posted August 14, 2009 at 06:33 PM 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"
Phear99 Posted August 15, 2009 at 12:16 AM Report #283367 Posted August 15, 2009 at 12:16 AM 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.
set#1 Posted August 19, 2009 at 08:30 AM Author Report #283784 Posted August 19, 2009 at 08:30 AM @ lordnins e @ Phear99 valeu as dicas. Deu certo!! Obrigado!! (((Peace&Love)))
lufinima Posted August 19, 2009 at 01:51 PM Report #283805 Posted August 19, 2009 at 01:51 PM ainda bem que resolves-te o teu problema.
bigboy123 Posted August 19, 2009 at 10:22 PM Report #283869 Posted August 19, 2009 at 10:22 PM @ set#1 Carrega em Topico Solved no fundo da página à esquerda para dar como tópico resolvido 🙂
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now