Ir para o conteúdo
set#1

Progress bar (VB.Net 2005)

Mensagens Recomendadas

set#1    0
set#1

Hello.

Tenho um progress bar no form de Login com timer, que ao terminar a contagem quero que feche o formulario consecutivamente o sistema.

    Private Sub Timer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer.Tick
        ProgressBar1.Value = ProgressBar1.Value + 1
        If (ProgressBar1.Value > 100) Then
            MsgBox("O sistema fechou por ficar muito tempo sem acede-lo. Volte a abrir novamente", MsgBoxStyle.OkOnly, "System Exit")
            Me.Close()
        End If
    End Sub

Mas quando termina a contagem tenho erro:

Value of '101' is not valid for 'Value'. 'Value' should be between 'minimum' and 'maximum'.

Parameter name: Value

Tenho o max = 100 e min = 0

Any idea??

Obrigado

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
ribeiro55    44
ribeiro55

    Private Sub Timer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer.Tick
        ProgressBar1.Value = ProgressBar1.Value + 1
        If (ProgressBar1.Value > 100) Then
            MsgBox("O sistema fechou por ficar muito tempo sem acede-lo. Volte a abrir novamente", MsgBoxStyle.OkOnly, "System Exit")
            Me.DialogResult = Windows.Forms.DialogResult.Abort
        End If
    End Sub

Sugiro o seguinte:

    Private Sub Timer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer.Tick
        If (ProgressBar1.Value => 100) Then
            MsgBox("O sistema fechou por ficar muito tempo sem acede-lo. Volte a abrir novamente", MsgBoxStyle.OkOnly, "System Exit")
            Me.DialogResult = Windows.Forms.DialogResult.Abort
        Else
            ProgressBar1.Value = ProgressBar1.Value + 1
        End If
    End Sub

Deves verificar antes de incrementares o valor.

Da tua maneira, estavas a atribuír um valor impossível (101 quando o máximo é 100) e só depois é que ias verificar se estava fora.

Para além disso, > não pode funcionar, por a mesma razão. 101 é impossível quando o máximo é 100.

BTW, não precisas da condição entre parentesis no VB :D

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
set#1    0
set#1

Sugiro o seguinte:

    Private Sub Timer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer.Tick
        If (ProgressBar1.Value => 100) Then
            MsgBox("O sistema fechou por ficar muito tempo sem acede-lo. Volte a abrir novamente", MsgBoxStyle.OkOnly, "System Exit")
            Me.DialogResult = Windows.Forms.DialogResult.Abort
        Else
            ProgressBar1.Value = ProgressBar1.Value + 1
        End If
    End Sub

Deves verificar antes de incrementares o valor.

Da tua maneira, estavas a atribuír um valor impossível (101 quando o máximo é 100) e só depois é que ias verificar se estava fora.

Para além disso, > não pode funcionar, por a mesma razão. 101 é impossível quando o máximo é 100.

BTW, não precisas da condição entre parentesis no VB :)

Com o

Me.DialogResult = Windows.Forms.DialogResult.Abort

o prompt do System Exit não para de aparecer. Pus

Me.Close()

também não para, mas clicando OK sai do sistema.

Agora o problema ta no prompt...o ideal seria aparecer uma vez e esperar pelo click OK.

E obrigado pela dica dos parentesis!!  :D

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
fLaSh_PT    0
fLaSh_PT

Tenta parar o timer

    Private Sub Timer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer.Tick
        If (ProgressBar1.Value => 100) Then
            MsgBox("O sistema fechou por ficar muito tempo sem acede-lo. Volte a abrir novamente", MsgBoxStyle.OkOnly, "System Exit")
            Me.DialogResult = Windows.Forms.DialogResult.Abort
            Timer.Enabled = False
            Me.Close
        Else
            ProgressBar1.Value = ProgressBar1.Value + 1
        End If
    End Sub

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
set#1    0
set#1

Tenta parar o timer

    Private Sub Timer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer.Tick
        If (ProgressBar1.Value => 100) Then
            MsgBox("O sistema fechou por ficar muito tempo sem acede-lo. Volte a abrir novamente", MsgBoxStyle.OkOnly, "System Exit")
            Me.DialogResult = Windows.Forms.DialogResult.Abort
            Timer.Enabled = False
            Me.Close
        Else
            ProgressBar1.Value = ProgressBar1.Value + 1
        End If
    End Sub

Ainda continua o loop da msgbox!!

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
set#1    0
set#1

Exprimenta parar o Timer antes da messagebox, as in, logo a primeira instrução do IF

Ficou assim e esta a funcionar:

    Private Sub Timer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer.Tick
        If ProgressBar1.Value >= 100 Then
            Timer.Stop()
            MsgBox("O sistema fechou por ficar muito tempo sem acede-lo. Volte a abrir novamente", MsgBoxStyle.OkOnly, "System Exit")
            Me.DialogResult = Windows.Forms.DialogResult.Abort
            Me.Close()
        Else
            ProgressBar1.Value = ProgressBar1.Value + 1
        End If
    End Sub

Parei o timer depois da condição If e antes da msgbox.

Obrigado pela atencao, voces sao gr8  :D

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade