D3POD Posted June 17, 2012 at 05:05 PM Report Share #463485 Posted June 17, 2012 at 05:05 PM 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 More sharing options...
thoga31 Posted June 17, 2012 at 05:10 PM Report Share #463489 Posted June 17, 2012 at 05:10 PM 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 More sharing options...
D3POD Posted June 17, 2012 at 05:21 PM Author Report Share #463490 Posted June 17, 2012 at 05:21 PM 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 More sharing options...
thoga31 Posted June 17, 2012 at 05:37 PM Report Share #463493 Posted June 17, 2012 at 05:37 PM (edited) 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 June 17, 2012 at 05:38 PM by thoga31 Knowledge is free! Link to comment Share on other sites More sharing options...
ribeiro55 Posted June 17, 2012 at 09:18 PM Report Share #463531 Posted June 17, 2012 at 09:18 PM (edited) 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 June 17, 2012 at 09:19 PM 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 More sharing options...
D3POD Posted June 17, 2012 at 10:06 PM Author Report Share #463542 Posted June 17, 2012 at 10:06 PM Só não percebi uma coisa, qual o comando (códgo) que faz com que a progressbar seja iniciada? Link to comment Share on other sites More sharing options...
thoga31 Posted June 17, 2012 at 10:08 PM Report Share #463543 Posted June 17, 2012 at 10:08 PM Só não percebi uma coisa, qual o comando (códgo) que faz com que a progressbar seja iniciada? Iniciada? Como assim? Quem tem de ser iniciado é o Timer! A ProgressBar não é "iniciada"... Knowledge is free! Link to comment Share on other sites More sharing options...
ribeiro55 Posted June 17, 2012 at 11:10 PM Report Share #463550 Posted June 17, 2012 at 11:10 PM 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 More sharing options...
D3POD Posted June 18, 2012 at 09:43 AM Author Report Share #463589 Posted June 18, 2012 at 09:43 AM (edited) 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 June 18, 2012 at 10:27 AM by Caça Link to comment Share on other sites More sharing options...
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