Jump to content

Progress Bar


D3POD
 Share

Recommended Posts

Bom dia, queria algo muito simples...

Por motivos de publicidade queria que a minha primeira form do projecto tivesse uma progressbar de 5 segundos...

O objectivo é quando essa barra atingir o 5s abrir o form2...

Como posso fazer essa barra iniciar sem necessidade de um botão...

Cumprimentos

Link to comment
Share on other sites

Metes um código no evento Load do Form1, e implementas-lhe também um Timer.

O Load ocorre sempre que a Form abre "do zero", pelo que te bastaria iniciar o Timer para que, a cada Tick, a ProgressBar "crescesse". Ao fim de 5 segundos, no evento Tick do Timer, colocavas a condição de saída e a mostra da Form2.

Atenção: não podes ter definido que a aplicação encerre quando a form de abertura encerre, se não a Form1, ao encerrar, irá terminar a aplicação toda. Vai às propriedades da aplicação para alterar esta definição.

Knowledge is free!

Link to comment
Share on other sites

Então se bem percebi, no Load coloco o código para a progressbar iniciar certo?

E depois no código do progressbar coloco tipo:

if progressbar.value = 5 then

form2.show

me.close

end if

correcto?

Como posso fazer isso do form ao fechar não encerrar a aplicação?

Link to comment
Share on other sites

Então se bem percebi, no Load coloco o código para a progressbar iniciar certo?

E depois no código do progressbar coloco tipo:

if progressbar.value = 5 then

form2.show

me.close

end if

correcto?

Correcto, errado, e depende... 😛

Esse código deverá ficar no evento Tick do Timer, e os valores dependem das propriedades que definires para a ProgressBar.

Para que a tua ProgressBar não ande em 5 "empurrões", 1 a cada segundo, faz isso de forma a criar a ilusão de continuidade. Mete o Meximum da ProgressBar a 100, e faz as contas a cada Tick (define o Tick para 50 milissegundos):

1) Somas 50 milissegundos a um contador, e quando este for igual a 5000 milissegundos (aka 5 segs), encerra a Form1 e abre a Form2

2) ProgressBar: como 100 vale para 5000 milissegundos, então 50 milissegundos será 1, ou seja, ProgressBar.Value += 1

Isto criará a ilusão de continuidade e não uma série de 5 empurrões, e controlarás a passagem de Forms pelo tempo e não pelo valor da ProgressBar.

Como posso fazer isso do form ao fechar não encerrar a aplicação?

Project > 'nome da tua aplicação' properties

Abre um novo separador com as propriedades, e em Application altera o "Shutdown Mode" para "When last form closes".

Edited by thoga31

Knowledge is free!

Link to comment
Share on other sites

Alternativamente podes utilizar o Step da progressbar, que é especificamente desenhado para procedimentos em passos.

Se preferires o movimento fluído, usa então o value como já te foi sugerido.

Deixo-te uma implementação que podes colocar no form load, nem que seja para tirares ideias 🙂

ProgressBar1.Maximum = 50
ProgressBar1.Step = 10
Dim TMR As New Timer With {.Interval = 1000, .Enabled = True}
AddHandler TMR.Tick, Sub(t As Object, ea As EventArgs)
                      If ProgressBar1.Value = ProgressBar1.Maximum Then
                        TMR.Dispose()
                        'Show primeiro, Close depois
                        End If
                        ProgressBar1.PerformStep()
                      End Sub
Edited by ribeiro55

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other sites

Só não percebi uma coisa, qual o comando (códgo) que faz com que a progressbar seja iniciada?

Se é ao que te referes, a propriedade Value da progressbar está por defeito a zero.

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other sites

Fiz assim:

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
 ProgressBar1.Increment(1)
 If ProgressBar1.Value = ProgressBar1.Maximum Then
	 Form1.Show()
	 Me.Close()
 End If
End Sub
End Class

Private Sub Inicio_Load(sender As Object, e As EventArgs) Handles MyBase.Load
 Timer1.Start()
End Sub

Aparentemente está a bombar 😛

Edited by Caça
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.