none
Timer Programmieren RRS feed

  • Frage

  • Hallo,

    Kann mir jemand halfen bei einem Timer?

    Ich wollte den Timer (Timer1) so programmieren, sodass er ein Fenster (nach z.B. 1.Minute) auomatisch schließt.

    Kennt jemand einen Code?


    Microsoft Visual Basic 2010 Express


    • Bearbeitet Tolots Montag, 20. Februar 2012 14:46
    Montag, 20. Februar 2012 10:39

Antworten

  • Tolots,

    Stefan`s code funktioniert bei mir problemlos.

    Mach es einfach so:

    Platziere auf Deinem Beenden Screen eine Timer komponente. Im Form load Event startest Du dann den Timer und überprüfst so wie Stefan gezeigt hat wie oft ( bei z.B. Timer.Intervall=1000 = 1 sec. ) der Event ausgelöst wurde. Wenn dieser Wert erreicht ist, stoppe den Timer und rufe ME.close auf.

    Start des Beenden Screen:

    'Visual Basic 2008 - .net 3.5 - Any CPU
        Private _BeendenScreen As BeendenScreen
        
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            _BeendenScreen = 
    New BeendenScreen(5)
            _BeendenScreen.Show()
            
    Me.Close()
        
    End Sub

    BeendenScreen:

    'Visual Basic 2008 - .net 3.5 - Any CPU
    Public Class BeendenScreen
        
    Private WithEvents _Timer As Windows.Forms.Timer
        
    Private _AnzeigeDauer As Integer
        Public Sub New(ByVal AnzeigeDauer As Integer)
            InitializeComponent()
            _AnzeigeDauer = AnzeigeDauer
            _Timer = 
    New Windows.Forms.Timer
            _Timer.Interval = 1000
        
    End Sub

        Private Sub BeendenScreen_Load(ByVal sender As ObjectByVal e As System.EventArgs) Handles Me.Load
            _Timer.Start()
        
    End Sub

        Private Sub _Timer_Tick(ByVal sender As ObjectByVal e As System.EventArgs) Handles _Timer.Tick
            _Timer.Enabled = 
    False

            _AnzeigeDauer = _AnzeigeDauer - 1
            
    If _AnzeigeDauer = 0 Then
                Me.Close()
            
    Else
                _Timer.Enabled = True
            End If

        End Sub
    End
     Class


    Ja, da steht VB 2008, das macht aber nichts, funktioniert genauso unter VB 2010.

    Hannes

    If you have got questions about this, just ask.

    In a perfect world,
    users would never enter data in the wrong form,
    files they choose to open would always exist
    and code would never have bugs.

    C# to VB.NET: http://www.developerfusion.com/tools/convert/csharp-to-vb/

    • Als Antwort markiert Tolots Montag, 20. Februar 2012 15:35
    Montag, 20. Februar 2012 15:08

Alle Antworten

  • Hallo Tolots,

    der Artikel ist zwar älter und der Code in C# aber trotzdem:

    A CountDownTimer inherited from System.Windows.Forms.Timer

    http://www.codeproject.com/Articles/5320/A-CountDownTimer-inherited-from-System-Windows-For 

    Schöne Grüße

    Oliver



    Montag, 20. Februar 2012 11:15
  • Hallo Tolots,

    der Artikel ist zwar älter und der Code in C# aber totzdem:

    A CountDownTimer inherited from System.Windows.Forms.Timer

    http://www.codeproject.com/Articles/5320/A-CountDownTimer-inherited-from-System-Windows-For 

    Schöne Grüße

    Oliver


    Schade dass ich dein Link nicht benutzen konnte.

    Ich kann die Sprache C# nicht.

    Ich formuliere neu:

    Ich brauche Hilfe bei einem Timer.

    Ich möchte ihn so Programmieren dass er (z.B. nach einer Minute) dass Programm schließt nach der einen Minute.

    Soll vom Benutzer nicht eingestellt werden können.


    Microsoft Visual Basic 2010 Express

    Montag, 20. Februar 2012 11:45
  • Also in VB

    Public Class Form1
    
    Public CD As Integer = 60
    
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
    Form2.Show()
    Me.Timer1.Start()
    
    End Sub
    
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    
    Me.Timer1.Interval = 1000
    Me.Label1.Text = CD  ' kannste auch weglassen, dient nur der Ausgabe in einem Label um den Countdown darzustellen
    CD = CD - 1
    If CD = 0 Then
    Form2.Close()
    Me.Timer1.Stop()
    End If
    
    End Sub
    
    End Class
    

    Ob du wie in diesem Code Form2 extra aufrufst oder was auch immer dein Programm an der Stelle macht, ist dir überlassen.

    Wichtig ist, dass du einen Start- und einen Kontrollwert angibst.
    Um den Code zu verstehen, erzeuge eine völlig neue Anwendung bestehend aus zwei Forms. In Form1 packe ein Label1 und einen Timer1.

    Dann kopiere den kompletten obigen Code, doppelklicke auf Form1, markiere alles und ersetze es durch diesen Code.

    Lass die Anwednung laufen und spiel etwas mit den Werten rum.
    Viel Spaß.


    Liebe Grüße Stefan | Cheers Stefan I'm using VB 2008 Express Be a good forum member - mark posts that contain the answers to your questions or those that are helpful c# in vb Translator: http://www.developerfusion.com/tools/convert/csharp-to-vb/

    Montag, 20. Februar 2012 13:47
  • Funktioniert leider auch nicht.

    Dass Programm hängt sich andauernd auf.

    Ich möchte dass so hinkriegen:

    Wenn ich auf den Close-Button klicke dann soll eine neue Form (in meinem Fall: Beenden-Screen) erscheinen.

    Darauf soll kein Contdownangezeigt werden.

    Nach ca. 1ner Minute soll dass komplette Programm beendet werden.

    Verstanden?

    Besser kann ich dass nicht erklären.


    Microsoft Visual Basic 2010 Express

    Montag, 20. Februar 2012 14:43
  • Tolots,

    Stefan`s code funktioniert bei mir problemlos.

    Mach es einfach so:

    Platziere auf Deinem Beenden Screen eine Timer komponente. Im Form load Event startest Du dann den Timer und überprüfst so wie Stefan gezeigt hat wie oft ( bei z.B. Timer.Intervall=1000 = 1 sec. ) der Event ausgelöst wurde. Wenn dieser Wert erreicht ist, stoppe den Timer und rufe ME.close auf.

    Start des Beenden Screen:

    'Visual Basic 2008 - .net 3.5 - Any CPU
        Private _BeendenScreen As BeendenScreen
        
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            _BeendenScreen = 
    New BeendenScreen(5)
            _BeendenScreen.Show()
            
    Me.Close()
        
    End Sub

    BeendenScreen:

    'Visual Basic 2008 - .net 3.5 - Any CPU
    Public Class BeendenScreen
        
    Private WithEvents _Timer As Windows.Forms.Timer
        
    Private _AnzeigeDauer As Integer
        Public Sub New(ByVal AnzeigeDauer As Integer)
            InitializeComponent()
            _AnzeigeDauer = AnzeigeDauer
            _Timer = 
    New Windows.Forms.Timer
            _Timer.Interval = 1000
        
    End Sub

        Private Sub BeendenScreen_Load(ByVal sender As ObjectByVal e As System.EventArgs) Handles Me.Load
            _Timer.Start()
        
    End Sub

        Private Sub _Timer_Tick(ByVal sender As ObjectByVal e As System.EventArgs) Handles _Timer.Tick
            _Timer.Enabled = 
    False

            _AnzeigeDauer = _AnzeigeDauer - 1
            
    If _AnzeigeDauer = 0 Then
                Me.Close()
            
    Else
                _Timer.Enabled = True
            End If

        End Sub
    End
     Class


    Ja, da steht VB 2008, das macht aber nichts, funktioniert genauso unter VB 2010.

    Hannes

    If you have got questions about this, just ask.

    In a perfect world,
    users would never enter data in the wrong form,
    files they choose to open would always exist
    and code would never have bugs.

    C# to VB.NET: http://www.developerfusion.com/tools/convert/csharp-to-vb/

    • Als Antwort markiert Tolots Montag, 20. Februar 2012 15:35
    Montag, 20. Februar 2012 15:08
  • Hallo Tolots,

    soll den in der einen Minute noch irgendwas passieren? Ansonsten kannst Du den Thread auch für eine Minute einschlafen lassen und dann das Programm beenden.

    Schöne Grüße

    Oliver

    Montag, 20. Februar 2012 15:14
  • Tolots,

    Stefan`s code funktioniert bei mir problemlos.

    Mach es einfach so:

    Platziere auf Deinem Beenden Screen eine Timer komponente. Im Form load Event startest Du dann den Timer und überprüfst so wie Stefan gezeigt hat wie oft ( bei z.B. Timer.Intervall=1000 = 1 sec. ) der Event ausgelöst wurde. Wenn dieser Wert erreicht ist, stoppe den Timer und rufe ME.close auf.

    Start des Beenden Screen:

    'Visual Basic 2008 - .net 3.5 - Any CPU
        Private _BeendenScreen As BeendenScreen
        
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            _BeendenScreen = 
    New BeendenScreen(5)
            _BeendenScreen.Show()
            
    Me.Close()
        
    End Sub

    BeendenScreen:

    'Visual Basic 2008 - .net 3.5 - Any CPU
    Public Class BeendenScreen
        
    Private WithEvents _Timer As Windows.Forms.Timer
        
    Private _AnzeigeDauer As Integer
        Public Sub New(ByVal AnzeigeDauer As Integer)
            InitializeComponent()
            _AnzeigeDauer = AnzeigeDauer
            _Timer = 
    New Windows.Forms.Timer
            _Timer.Interval = 1000
        
    End Sub

        Private Sub BeendenScreen_Load(ByVal sender As ObjectByVal e As System.EventArgs) Handles Me.Load
            _Timer.Start()
        
    End Sub

        Private Sub _Timer_Tick(ByVal sender As ObjectByVal e As System.EventArgs) Handles _Timer.Tick
            _Timer.Enabled = 
    False

            _AnzeigeDauer = _AnzeigeDauer - 1
            
    If _AnzeigeDauer = 0 Then
                Me.Close()
            
    Else
                _Timer.Enabled = True
            End If

        End Sub
    End
     Class


    Ja, da steht VB 2008, das macht aber nichts, funktioniert genauso unter VB 2010.

    Hannes

    If you have got questions about this, just ask.

    In a perfect world,
    users would never enter data in the wrong form,
    files they choose to open would always exist
    and code would never have bugs.

    C# to VB.NET: http://www.developerfusion.com/tools/convert/csharp-to-vb/

    Eine Frage noch.

    Wie lange ist denn die anzeigedauer?


    Ich verwende Microsoft Visual Basic 2010 Express. I`m using Microsoft Visual Basic 2010 Express edition.

    Montag, 20. Februar 2012 15:36
  • In dem Start Beispiel ( erste code Schnipsel ) habe ich 5 -> 5 sekunden angegeben. Kannst Du ändern wie Du willst, ich wollte aber zum Testen keine 60 Sekunden warten ;-)

    Hannes

    If you have got questions about this, just ask.

    In a perfect world,
    users would never enter data in the wrong form,
    files they choose to open would always exist
    and code would never have bugs.

    C# to VB.NET: http://www.developerfusion.com/tools/convert/csharp-to-vb/

    Montag, 20. Februar 2012 15:39
  • Ich muss zugeben, ich habe etwas Probleme damit was und wie du es schreibst.
    Du meinst es sicher nicht böse, aber es kommt hier und auch in anderen Threads teilweise so rüber, als ob wir dazu da wären, dich mit Code zu versorgen und den auch so zu schreiben, dass du ihn einfach nur kopieren und einfügen brauchts.

    Dieses Forum stellt keinen technischen Support für ein Produkt dar sondern hier helfen sich sehr viele Anwender gegenseitig Probleme zu lösen.
    Es werden Methoden und Wege aufgezeigt aber keine Endlösungen erarbeitet.

    Wenn du es nicht besser erklären kannst, poste einfach deinen Code.


    Liebe Grüße Stefan | Cheers Stefan I'm using VB 2008 Express Be a good forum member - mark posts that contain the answers to your questions or those that are helpful c# in vb Translator: http://www.developerfusion.com/tools/convert/csharp-to-vb/

    Montag, 20. Februar 2012 15:52
  • Hallo Stefan,

    ich kann mich daran erinnern, dass Du zu Beginn deiner Posterkarriere 2009, auch nicht viel besser rüber gekommen bist. Also sei großzügig. Tolots ist erst seit 3 Wochen dabei.

    Schöne Grüße

    Oliver

    Montag, 20. Februar 2012 16:06
  • In dem Start Beispiel ( erste code Schnipsel ) habe ich 5 -> 5 sekunden angegeben. Kannst Du ändern wie Du willst, ich wollte aber zum Testen keine 60 Sekunden warten ;-
    Danke für den Hinweis. :-)

    Ich verwende Microsoft Visual Basic 2010 Express. I`m using Microsoft Visual Basic 2010 Express edition.

    Montag, 20. Februar 2012 18:04
  • Hallo Tolots,

    soll den in der einen Minute noch irgendwas passieren? Ansonsten kannst Du den Thread auch für eine Minute einschlafen lassen und dann das Programm beenden.

    Schöne Grüße

    Oliver

    Nö.

    In der Minute beendet dass Programm sich selbst.

    Passt so.


    Ich verwende Microsoft Visual Basic 2010 Express. I`m using Microsoft Visual Basic 2010 Express edition.

    Montag, 20. Februar 2012 18:06
  • Hallo Stefan,

    ich kann mich daran erinnern, dass Du zu Beginn deiner Posterkarriere 2009, auch nicht viel besser rüber gekommen bist. Also sei großzügig. Tolots ist erst seit 3 Wochen dabei.

    Schöne Grüße

    Oliver

    Genau.

    Programmiere auch seit, seit...  1.Jahr.

    Versuche aber auch ein Paar Fragen zu beantworten.


    Ich verwende Microsoft Visual Basic 2010 Express. I`m using Microsoft Visual Basic 2010 Express edition.

    Montag, 20. Februar 2012 18:08