[VB] Timer Problem

06/19/2010 17:02 Chain Reaction#1
Hey Leute

Ich habe ein problem mit einem Timer.
Ich mache es meistens so, wenn Button1 geklickt wird soll das passieren:
PHP Code:
Timer1.Start
Timer1
.Interval = 1000
timeleft 
= 5 
So dann schreib ich bei Timer hin:
PHP Code:
timeleft = timeleft -1
If timeleft = 0 Then Label1.Visible = True 
Natürlich schreibe ich vorher noch
PHP Code:
 Dim timeleft as Byte 
So dann debugge ich das ganze.
Nach 5 Sekunden wird auch schön das Label angezeigt nur dann beendet sich das debugging automatisch und dann kommt eine Fehlermeldung:


Die arethmetische Operation hat einen Überlauf verursacht.
Dividieren sie nicht durch 0.

Diese Fehlermeldung wird bei
PHP Code:
 timeleft = timeleft -1 
angezeigt.
Was muss ich machen damit dies weg geht?
Gibt es noch andre Möglichkeiten außerd timeleft, dass z.B. Nach 5 Sekunden ein Label sichtbar gemacht wird?
Wenn ja wie?

Bekommt alle n Thanks von mir ;)
06/19/2010 17:22 P-a-i-n#2
nutz doch timer.tag sieht so aus

Code:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Timer1.Tag = 5
        Timer1.Enabled = True
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Timer1.Enabled = False
        Timer1.Interval = 1000
        Label1.Text = ""
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

        Timer1.Tag = Timer1.Tag - 1
        If Timer1.Tag < 0 Then
            Label1.Text = "huhu"
        End If
    End Sub
06/19/2010 17:52 killeeer111#3
Quote:
Originally Posted by luckystriker96 View Post
Hey Leute

Ich habe ein problem mit einem Timer.
Ich mache es meistens so, wenn Button1 geklickt wird soll das passieren:
PHP Code:
Timer1.Start
Timer1
.Interval = 1000
timeleft 
= 5 
So dann schreib ich bei Timer hin:
PHP Code:
timeleft = timeleft -1
If timeleft = 0 Then Label1.Visible = True 
Natürlich schreibe ich vorher noch
PHP Code:
 Dim timeleft as Byte 
So dann debugge ich das ganze.
Nach 5 Sekunden wird auch schön das Label angezeigt nur dann beendet sich das debugging automatisch und dann kommt eine Fehlermeldung:


Die arethmetische Operation hat einen Überlauf verursacht.
Dividieren sie nicht durch 0.

Diese Fehlermeldung wird bei
PHP Code:
 timeleft = timeleft -1 
angezeigt.
Was muss ich machen damit dies weg geht?
Gibt es noch andre Möglichkeiten außerd timeleft, dass z.B. Nach 5 Sekunden ein Label sichtbar gemacht wird?
Wenn ja wie?

Bekommt alle n Thanks von mir ;)
habs ein bisschen geändert ;)

Code:
Public Class Form1
dim timeleft as integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Timer1.interval = 1000
        timeleft = 5
        timer2.interval = 1000
        timer1.enabled = true
        timer2.enabled = true
    End Sub
Dann beim timer1:
Code:
timeleft = val(timeleft - 1)
dann brauchst du einen 2.timer:
Code:
if timeleft = 0 then
label1.visible = true
End IF
mfg
06/19/2010 18:13 Chain Reaction#4
Also Pain deins hat irgendwie nicht geklappt und das von killer hat geklappt.
Trotzdem Danke an euch beide.
06/19/2010 18:19 P-a-i-n#5
sry ich vergas das hätte oben noch hin müssen

Option Explicit On
Imports System.Windows.Forms
06/19/2010 18:33 Chain Reaction#6
Ja ich hab noch ne Frage :)

Ich hab das ja jetzt einmal so gemacht mit dem Timer, dass dann ein Label sichtbar wird.
Jetzt wollt ich das selbe nochmal machen.
Also wieder 2 Timer nehemen und dann wieder 3 Sekunden zählen lassen und dann ein Panel sichtbar machen lassen.
Geht aber nicht.
Die Form wird dann nicht nach 3 Sekunden sichtbar sondern sofort.

Kennst du eine Lösung?
06/19/2010 18:48 killeeer111#7
mfg
06/19/2010 19:04 Chain Reaction#8
Ja das klappt ja nicht.
Hab das so gemacht.
PHP Code:
Public Class Form1
    
    
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       
        Timer1
.Start()
        
Label4.Visible = True
    End Sub
    Dim timeleft 
As Integer
    
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        
If Label5.Visible = True Then
            Timer3
.Start()
            
Timer3.Interval = 1000
            timeleft 
= 3
            Timer4
.Interval = 1000
            Timer3
.Enabled = False
            Timer4
.Enabled = True

        End 
If
        
Timer1.Interval = 1000
        timeleft 
= 5
        Timer2
.Interval = 1000
        Timer1
.Enabled = False
        Timer2
.Enabled = True
        
If Label5.Visible = True Then Timer3.Start()


    
End Sub

    
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
       
        timeleft 
= Val(timeleft - 1)
    
End Sub

    
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
        
If timeleft = 0 Then
            Label4
.Visible = False
            
If Label4.Visible = False Then
                Label5
.Visible = True
                
If Label5.Visible = True Then Button1.Enabled = False
                
If Label5.Visible = True Then Timer1.Stop()





            
End If
        
End If
    
End Sub

    
Private Sub Timer3_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer3.Tick

        timeleft 
= Val(timeleft - 1)
    
End Sub

    
Private Sub Timer4_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer4.Tick
        
If timeleft = 0 Then
            Panel1
.Visible = True
        End 
If
    
End Sub
End 
Class 
Nachdem Label5 sichtbar wurde, passiert nichts mehr, obwohl dann eig nach 3 Sekunden Panel1 sichtbar werden soll.
Was ist daran falsch?
06/19/2010 19:07 killeeer111#9
ich glaub nicht, das da ein error drin ist.
standartmäßig hat ein panel die selbe farbe wie die form
06/19/2010 19:08 Chain Reaction#10
Ja ich hab eine Picturebox mit einem Bild
und die form hat eine schwarze farbe.
Von daher muss da was falsch sein.
06/19/2010 19:12 killeeer111#11
schick mir mal das proj. bzw. uploade es bei rapidshare, megaupload oder so und schick mir link, ich guck mir das mal an wo fehler ist.
06/19/2010 19:21 Chain Reaction#12
Is das die richtige Datei?[Only registered and activated users can see links. Click Here To Register...]
06/19/2010 19:27 killeeer111#13
ne :D
standartmäßig ist es im dokumente ordner, dh :
C:\Users\Deinname\Documents\Visual Studio 2008/2010 (unter win 7)
und da suchst du den ordner von deinem projekt und den packst du in zip oder rar, und dann ladest hoch
06/19/2010 19:48 Chain Reaction#14
Achso :D [Only registered and activated users can see links. Click Here To Register...]
06/19/2010 20:09 killeeer111#15
also ich habs jetzt nicht im source ausgebessert, aber ich weis dein problem: