Jump to content

ProgressBar


l00ker
 Share

Recommended Posts

Boas pessoal,

No meu programa, na parte do login eu queria por uma ProgressBar, o programa está um pouco lento ao abrir a base de dados e a procurar se os dados estão corretos, no entaonto enquanto o programa faz isso eu gostaria de colocar uma progressbar ou nao sei se da para colocar um gif numa picturebox (http://innovativeendurance.com/image/h6viz.gif), eu testei e o gif funciona corretamente no visualbasic, mas o meu problema é o seguinte a picturebox com o gif esta invisivel, quando eu carrego no botão para fazer o LOGIN eu ponho a picturebox visivel mas o gif está estático, penso que o programa está lento enquanto executo o algoritmo, nao sei se me podem ajudar.

Obrigado,

Link to comment
Share on other sites

Nao, o gif esta a funcionar corretamente no VB, eu tenho o botao de LOGIN e a minha primeira linha de codigo ao clicar no botao é pbGif.visible=true, e em seguida executa o algoritmo do LOGIN e enquanto é executado o guif esta estatico, só quando o alguritmo do LOGIN finaliza é que o gif fica a rodar.

Nao sei se me faço entender..

Link to comment
Share on other sites

Pois, se estás bloqueado a fazer alguma operação sem permitir a aplicação executar os eventos então isso fica bloqueado.

A solução passa pelo que o herty indicou. Tens de ter a parte de login a ser processada num thread separado

Exemplo do botão login

Private Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click
   ' Mostrar a imagem de processando
   PictureBox1.Visible = True

   ' Criar um novo thread que vai executar o método EfetuarLogin
   Dim thread As New Thread(AddressOf EfetuarLogin)
   ' Iniciar a thread
   thread.Start()

   ' Ciclo que processa enquanto a thread está a ser executada
   While (thread.IsAlive)
       ' Permite a aplicação processar os eventos e assim não ficar bloqueada
       Application.DoEvents()
   End While

   ' Esconder a imagem de processando
   PictureBox1.Visible = False

End Sub

' Método de exemplo que vai efetuar o procedimento de login
Private Sub EfetuarLogin()
   ' Para testes esperar apenas 5 segundos
   Threading.Thread.Sleep(5000)
End Sub
Link to comment
Share on other sites

Adicionei 'Control.CheckForIllegalCrossThreadCalls = False' no EfetuaLogin

Já testei está a funcionar perfeitamente, mas encontrei outro problema, ao abrir o póximo form o form fecha logo em seguida, nao sei porquê, penso que seja por causa do codigo que adicionei ('Control.CheckForIllegalCrossThreadCalls = False'), sem isto nao cosigo esconder ou abrir forms estou certo? como consigo resolver este problema?

Edited by l00ker
Link to comment
Share on other sites

Estou novamente com problemas pessoal 😞 ao usar o showdialog(), no form a seguir estou com alguns problemas, nao consigo fechar nem abrir outros forms, se usar o show() ao abrir o form ele fecha logo de seguida.

Edited by l00ker
Link to comment
Share on other sites

Com o thread eu nao estava a conseguir mudar o nome dos objetos por codigo entao passei tudo para variaveis e mudei o nome dos objetos com as variaveis fora da thread, agora esta tudo a funcionar corretamente.. Obrigado por tudo 🙂

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
 Share

×
×
  • 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.