Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [vb.net] Countdown

    Ciao, vorrei fare una semplice form con 2 pulsanti (start e stop) e una label dove viene visualizzato un conto alla rovescia da 15 minuti ... compresi i secondi.

    Mi sembra una cosa abbastanza semplice, ho provato ad usare il timer, ma non riesco a saltarci fuori, qualcuno potrebbe darmi come posso fare o darmi qualche link.

    Grazie 1000!
    Ciao

  2. #2
    Puoi usare una variabile globale che contiene la data a cui è iniziato il conto alla rovescia, e che viene impostata all'evento click del pulsante "Avvia", e un'altra variabile globale di tipo timespan che contiene l'intervallo di tempo da analizzare (15 minuti: DIm T As TimeSpap = TimeSpan.FromMinutes(15)). Nel tick del timer, ogni 500ms, aggiorni la label, facendo una differenza tra la data corrente e quella a cui è iniziato il countdown. Se questa differenza è uguale o meggiore a T, fermi il timer e fai partire, chessò, una musichetta XD.

  3. #3
    Approfitto della tua disponibilità,
    ma come faccio a definire la variabile globale nell'evento Button1_Click?
    .. e come faccio a fare la differenza tra la data corrente e quella a cui è iniziato il countdown?

    Tnx!
    Ciao

  4. #4
    Mi correggo, come faccio a trovare la data da impostare nella variabile globale?

    Grazie

  5. #5
    Mi ero perso in un bicchier d'acqua... ora pero' ho un problema nel gestire il mio countdown, vorrei fare 1 pulsante di pausa (al primo click si ferma il countdown e al secondo riprende il contgo da dove era arrivato ) e mi piacerebbe inserire un segnale sonoro quando il countdown raggiunge lo zero.
    Mi date qualche dritta?

    il mio codice:

    Public Class Form1
    Inherits System.Windows.Forms.Form
    Dim TargetTime As System.DateTime
    Dim Minute As Integer
    Dim Level As Integer = 1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Try
    Minute = TextBox1.Text
    If Timer1.Enabled Then
    Timer1.Stop()
    Else
    TargetTime = Now.AddMinutes(Minute)
    Timer1.Start()
    End If
    Catch ex As Exception
    MsgBox("No Time Set")
    End Try
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    Dim Diff As TimeSpan = TargetTime.Subtract(Now)
    If Diff.Seconds = -1 Then
    Timer1.Stop()
    Level = (Level + 1)
    TargetTime = Now.AddMinutes(Minute)
    Timer1.Start()
    Else
    Label1.Text = Format(Diff.Minutes, "#0") & ":" & Format(System.Math.Abs(Diff.Seconds), "00")
    Label2.Text = Level
    End If
    End Sub
    End Class

    Grazie 1000!
    Ciao

  6. #6
    La risposta ce l'hai già: se la label contiene il tempo rimanente, una volta ripreso il countdown dopo la pausa non devi fare altro che resettare le variabili in modo che il countdown parta dal tempo rimanente, anzichè da quello iniziale.

  7. #7
    Non riesco a saltarci fuori... Devo creare un'altro timer? Il formato della mia variabile allo stop e diverso rispetto a quello iniziale

    Mi potresti dare una mano?

    Grazie 1000!
    Ciao

  8. #8
    Perfavore qualcuno mi da una mano?

    Grazie
    Ciao

  9. #9
    Il formato della label è "m:s", ossia minuti e secondi. Nel pulsante "Riprendi", ottieni questi due valori e resetti il timer:
    codice:
    Private Sub Continue_Click(...) Handles btnContinue.Click
      Dim Min, Sec As Int32
      Dim S() As String = lblTempo.Text.Split(":")
      'Divide la stringa nel carattere ':', ottenendo così i minuti e i secondi
      Min = S(0)
      Sec = S(1)
      'Quello che segue è il tuo codice:
      If Timer1.Enabled Then
        Timer1.Stop()
      Else
        TargetTime = Now.AddSeconds(Min * 60 + Sec)
        Timer1.Start()
      End If
    End Sub

  10. #10
    Grazie 1000!
    Ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.