2017-01-04 1 views
1

Ich versuche einen Countdown zu einer Datenrasteransicht hinzuzufügen, die von 2 Minuten auf 0 geht. Wenn die Schaltfläche gedrückt wird, sollte eine neue Zeile mit einem Token und 2 Minuten Countdown hinzugefügt werden. Wenn der 2-Minuten-Countdown 0 erreicht, sollte diese Zeile gelöscht werden. Ich habe das Token bereits eingerichtet und im Moment nutze ich anstatt eines Countdowns die Zeit in 2 Minuten. Die Hauptsache, die ich erreichen möchte, ist das Löschen des Tokens nach 2 Minuten, wenn das Token abläuft.Fügen Sie bei jedem Drücken der Taste den Countdown zur Datenrasteransicht hinzu. Dann Zeile löschen, nachdem der Countdown 0 erreicht 0

Hier ist meine aktuellen Code:

 //Add Token To Grid 
     int row = 0; 
     TokenGrid.Rows.Add(); 
     row = TokenGrid.Rows.Count - 2; 
     TokenGrid["CaptchaToken", row].Value = CaptchaWeb.Document.GetElementById("gcaptcha").GetAttribute("value"); 
     //Time Left 
     TokenGrid["ExpiryTime", row].Value = DateTime.Now.AddMinutes(2).ToLongTimeString(); 
+0

verwenden Sie jede Art von Timer? –

+0

Ich habe einen Timer, aber es wird nur verwendet, um die aktuelle Zeit anzuzeigen. – Andre

Antwort

0

In der Timer timeelapsed() Ereignis den Wert ExpiryTime jeder Zeile mit der aktuellen Zeit vergleichen. Wenn ExpiryTime < current time, löschen Sie die Zeile.

0

einen Timer implementieren (siehe How do I create a timer in WPF?):

const int MAX_DURATION = 120; 
System.Windows.Threading.DispatcherTimer dispatcherTimer; 

// In the OnClick 
DateTime timerStart = DateTime.Now; 
dispatcherTimer = new System.Windows.Threading.DispatcherTimer(); 
EventHandler handler = new EventHandler(dispatcherTimer_Tick); 
dispatcherTimer.Tick += handler; 
dispatcherTimer.Interval = TimeSpan.FromSeconds(1); 
dispatcherTimer.Start(); 

private void dispatcherTimer_Tick(object sender, EventArgs e) 
{ 
    // Display seconds 
    var currentValue = DateTime.Now - timerStart; 
    TokenGrid["ExpiryTime", row].Value = currentValue.Seconds.ToString(); 

    // When the MAX_DURATION (2 minutes) is reached, stop the timer 
    if (currentValue >= MAX_DURATION) { 
     dispatcherTimer.Tick -= handler; 
     dispatcherTimer.Stop(); 
     TokenGrid.Rows.RemoveAt(row); 
    } 
} 
+0

Ich verwende Winforms nicht WPF. Ich kann den Namensraum 'System.Windows.Threading' nicht finden und weiß nicht, wo ich den ersten Teil des Codes platzieren soll. – Andre

Verwandte Themen