Newsgroup: it.comp.lang.visual-basic
Titolo: Conto alla rovescia

Ho un conteggio alla rovescia che partendo da un tempo va a (-00:02, -
00:01,-00:00) e questo funziona
ma quando il conteggio prosegue per andare in positivo vorrei che 
visualizzasse:
(+00:01, +00:02,+00:03) e via discorrendo ma con il codice che ho 
ottengo:
(+00:+-01, +00:+-02,+00:+-03 .... e quando passo il minuto +-01:+-01, 
+-01:+-02,+-01:+-03)
Come faccio a visualizzare solo +00:01 ..... +01:00 ?
Questo ï¿œ il codice che uso:
        Dim TargetTime As System.DateTime
        TargetTime = DateTime.Now.AddSeconds(strTime)
        Dim Diff As TimeSpan = TargetTime.Subtract(DateTime.Now)
        Select Case Diff.Seconds
            Case Is >= 0
                TimeOver = False
                sTime = (Diff.Minutes.ToString("-00")) & ":" & 
(Diff.Seconds.ToString("00"))
            Case Is < 0
                TimeOver = True
                sTime = (Diff.Minutes.ToString("+00")) & ":" & 
(Diff.Seconds.ToString("00"))
        End Select
Grazie, Alverman

 Come faccio a visualizzare solo +00:01 ..... +01:00 ?
Ti basta considerare il valore assoluto dei secondi quando componi la
stringa.
Quindi, più semplicemente (ripuliture del codice incluse):
   Dim Diff As TimeSpan = TargetTime.Subtract(DateTime.Now)
   Dim TargetTime As System.DateTime =
DateTime.Now.AddSeconds(strTime)
   Dim m As Integer = Diff.Minutes
   Dim s As Integer = Math.Abs(Diff.Seconds)
   'testi il valore effettivo, ma stampi il valore assoluto 's'
   If Diff.Seconds >= 0 Then
      TimeOver = False
      sTime = String.Format("-{0:00}:{1:00}", m, s)
   Else
      TimeOver = True
      sTime = String.Format("+{0:00}:{1:00}", m, s)
   End If

Quando scatta il minuto positivo mi scrive +-01:00

 Quando scatta il minuto positivo mi scrive +-01:00
Ho messo il codice che ti ho postato in una form muova con un pulsante
e un timer (adattato un minimo, visto che alcune variabili non hai
specificato dove/cosa fanno) e funziona regolarmente


Chiedo venia... ho visto ora che hai scritto *il minuto positivo*, non
i secondi
Si, c'è una dimenticanza; se hai letto un minimo commento che ho
scritto, non dovrebbe essere necessario dirti come correggere...
Riguardandolo, c'era anche un altro problema nel tuo codice
iniziale... TimeSpan.Seconds ti restituisce *la porzione*, in secondi,
dell'intervallo trascorso; questo vuol dire che si resetta
ciclicamente (alla fine di ogni minuto passa da +59 a 0); il tuo
Select Case invece serve a sapere se hai già passato o meno, in
assoluto, il punto specificato; devi quindi fare riferimento al numero
di secondi *totali* dell'intervallo.
Se guardi le altre property di TimeSpan capisci subito a quale mi
riferisco...

Ti ringrazio per l'interessamento :)
Io ho provato a fare un progetto vuoto con questo codice ma a me esce
come ti ho detto. +-01:00
Public Class Form1
    Dim TargetTime As System.DateTime = DateTime.Now.AddSeconds(30)
    Dim TimeOver As Boolean
    Dim sTime As String
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e
As
System.EventArgs) Handles Button1.Click
        Timer1.Enabled = True
    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(DateTime.Now)
        Dim m As Integer = Diff.Minutes
        Dim s As Integer = Math.Abs(Diff.Seconds)
        'testi il valore effettivo, ma stampi il valore assoluto 's'
        If Diff.Seconds >= 0 Then
            TimeOver = False
            TextBox1.Text = String.Format("-{0:00}:{1:00}", m, s)
        Else
            TimeOver = True
            TextBox1.Text = String.Format("+{0:00}:{1:00}", m, s)
        End If
    End Sub
End Class

Grazie per la tua superdisponibilitï¿œ.
Alverman

Risolto ... grazie