Jump to content

Fechar form antes de abrir outra


zephirus

Recommended Posts

Olá a todos,

Na minha aplicação, quando a inicío, além de aparecer a janela principal, aparece de imediato uma outra que serve para o login de users. Quando o user insere os dados pela primeira vez, é pedido que mude a sua password. Para isso, uma outra janela surge no ecrão. Eu quero que ao aparecer essa nova janela, a de login seja fechada mas não estou a conseguir. O meu código é algo do género:

Sub Btn_OkClick(sender As Object, e As EventArgs)
   Select Case CheckIfPasswordIsDefault(txt_username.Text.Replace("'", "").Trim())
      Case = 1
         oldpassword = txt_password.Text.Replace("'", "").Trim()
         Me.Close()
         ChangePassword.ShowDialog()
      Case = 0
         ' Faz login do user
End Select

Apesar de eu utilizar o "Me.Close()", a janela de login não fecha. Penso que tem a ver com o uso do Select Case mas não estou a ver alternativa. Alguém pode ajudar?

Link to comment
Share on other sites

Olá a todos,

Na minha aplicação, quando a inicío, além de aparecer a janela principal, aparece de imediato uma outra que serve para o login de users. Quando o user insere os dados pela primeira vez, é pedido que mude a sua password. Para isso, uma outra janela surge no ecrão. Eu quero que ao aparecer essa nova janela, a de login seja fechada mas não estou a conseguir. O meu código é algo do género:

Sub Btn_OkClick(sender As Object, e As EventArgs)
   Select Case CheckIfPasswordIsDefault(txt_username.Text.Replace("'", "").Trim())
      Case = 1
         oldpassword = txt_password.Text.Replace("'", "").Trim()
         Me.Close()
         ChangePassword.ShowDialog()
      Case = 0
         ' Faz login do user
End Select

Apesar de eu utilizar o "Me.Close()", a janela de login não fecha. Penso que tem a ver com o uso do Select Case mas não estou a ver alternativa. Alguém pode ajudar?

Podes utilizar a função if

Sub Btn_OkClick(sender As Object, e As EventArgs)
   If CheckIfPasswordIsDefault(txt_username.Text.Replace("'", "").Trim())=1 then
      oldpassword = txt_password.Text.Replace("'", "").Trim()
         Me.Close()
         ChangePassword.ShowDialog()
      else
         ' Faz login do user
End if
end sub

Para fechares essa janela invés de utilizares o me.close utilizar unload nome da form

Lema: Se eu não saber de alguma coisa não se preocupem porque tento sempre ajudar alguma coisita, nem que seja, por palpites/sugestões.

Link to comment
Share on other sites

Quem é que esta a chamar a Sub Btn_OkClick ?

Por acaso o programa executará a linha changepassword.showdialog() alguma vez?

E será que a linha Me.Close() é executada?

Eu tenho a MainForm visível e o Btn_OKClick é executado quando carrego num botão de outra form. Quando faço isso, ele mostra a form 'changepassword', ou sejam essa linha é de facto executada. A do close é que não.

Estás a tentar fechar a form q está dentro do Application.Run(new Form()) ?

Essa form se for fechada a execução do programa termina.

A form que estou a fechar não é essa, é outra.

Link to comment
Share on other sites

E porque não mostras uma janela de login, e só depois a principal ? Se for necessário mostrares a de alteração de password, fazer-o antes de mostrar a principal.

O problema manter-se-ia, creio. De qualquer forma, eu quero ter a main window em fundo, mostrar a de login e se for caso para mostrar a de mudar a password, a de login tem de fechar. Acrescento ainda que se eu cancelar a mudança da password, a de login tem de aparecer de novo. Todas as janelas menos a Main são mostradas como dialog.

Link to comment
Share on other sites

Ok, tu é que defines como queres que trabalhe 🙂

Quando fazes o Me.Close() tens o form principal por trás (aberto) ? Se sim, isto deve chegar:

My Project - Application Tab e no Shutdown Mode seleccionas: "When last form closes".

Hmm, não estou no visual studio. Se bem percebo isso é uma opção do visual studio e não da form, correcto?

EDIT: já vi que sim.

Link to comment
Share on other sites

Humm, assim é mais dificil!

No ficheiro Application.Designer.vb tenta alterar o ShutDownStyle

Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterAllFormsClose

Ok, já mudei mas o problema mantém-se.

Vou por aqui parte do código:

Sub Btn_OkClick(sender As Object, e As EventArgs)
   Select Case (String.IsNullOrEmpty(txt_username.Text.Replace("'", "").Trim()) Or String.IsNullOrEmpty(txt_password.Text.Replace("'", "").Trim()))
      Case True
         MsgBox("All fields are required.", MsgBoxStyle.Critical, "Incomplete fields")
      Case False
         btn_Ok.Enabled = False
         btn_Exit.Enabled = False
         CheckUserData("checkUserNameAndPassword", txt_username.Text.Replace("'", "").Trim(), GenerateHash(txt_password.Text))
         Select Case exists
            Case = True
            username = txt_username.Text.Replace("'", "").Trim()
            CheckIfPasswordIsDefault(txt_username.Text.Replace("'", "").Trim())
               Select Case defaultpassword
                  Case = 1
                     Me.Close()
                     oldpassword = txt_password.Text.Replace("'", "").Trim()
                     Me.Close()
                     ChangePassword.ShowDialog()
                  Case = 0
.....
Link to comment
Share on other sites

Então não estou a entender ... qual é o form que fechas e qual é problema mesmo. Tenta lá explicar isso melhor.

A minha aplicação tem uma MainForm, uma form de Login e uma form ChangePassword.

Quando inicio, a MainForm é exibida e no load tenho: Login.ShowDialog()

Quando estou na janela de Login, ao colocar os dados de utilizador, este tem de mudar a password. Para tal, eu faço o ChangePassword.ShowDialog() mas antes quero que a de Login desapareça (pensando eu que o Me.Close()) fazia o serviço. E é isto. Se estiver confuso diz.

Link to comment
Share on other sites

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.