2013-10-26 2 views
-1

У меня есть две кнопки. Запуск и остановка.Как получить количество секунд между двумя нажатиями кнопок

Мне нужно, когда я нажимаю старт, подсчитываю время, пока не нажмем стоп и не отправлю сколько секунд и минут на поле сообщения.

я начинаю как этот

private void button6_Click(object sender, EventArgs e) 
{ 
    //start 
    DateTime now = DateTime.Now; 
} 

private void button5_Click(object sender, EventArgs e) 
{ 
    //end 
    DateTime end = DateTime.Now; 

    MessageBox.Show(end-now); 
} 
+1

И в чем ваш вопрос? – Matt

ответ

1

Использование System.Diagnostics.Stopwatch, это является наиболее точным.

Вот пример:

static Stopwatch sw = new Stopwatch(); 


private void Start_Click(object sender, EventArgs e) 
{ 
    sw.Start(); 
} 

private void stopButton_Click(object sender, EventArgs e) 
{ 
    sw.Stop(); 

    TimeSpan ts = sw.Elapsed; 

    string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", 
     ts.Hours, ts.Minutes, ts.Seconds, 
     ts.Milliseconds/10); 

    MessageBox.Show("Elapsed time = " + elapsedTime); 
} 

Это полностью рабочий и протестирован, но, к сожалению, у меня нет достаточной репутации размещать изображения.

3

Используйте этот

DateTime start; 
private void button6_Click(object sender, EventArgs e) 
{ 
    //start 
    start = DateTime.Now; 
} 

private void button5_Click(object sender, EventArgs e) 
{ 
    //end    
    TimeSpan ts = DateTime.Now - start; 
    MessageBox.Show(String.Format("{0} minutes and {1} seconds", 
        Math.Floor(ts.TotalMinutes), ts.Seconds)); 
} 

Это дает результат, как это.

enter image description here

+0

Вы бы не использовали 'Total Seconds', вам нужно просто [' Seconds'] (http://msdn.microsoft.com/en-us/library/system.timespan.seconds.aspx). Если вы используете 'TotalSeconds', и вы ждали 61 секунду, он выдавал бы' 1 минута и 61 секунд' –

+0

Теперь у вас есть проблема с oppiste, изменив 'TotalMinutes' на' Minutes', если вы ждали 1 час, он сказал бы '0 минут и 0 секунд –

+0

сообщение не показано большое количество – Homam

1

Используйте stopwatch class.

Пример из MSDN:

Stopwatch stopWatch = new Stopwatch(); 
stopWatch.Start(); 
Thread.Sleep(10000); 
stopWatch.Stop(); 
// Get the elapsed time as a TimeSpan value. 
TimeSpan ts = stopWatch.Elapsed; 

// Format and display the TimeSpan value. 
string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", 
    ts.Hours, ts.Minutes, ts.Seconds, 
    ts.Milliseconds/10); 
1

Как и другие ответы, используйте класс Stopwatch. Просто убедитесь, что обе кнопки имеют доступ к одному и тому же секундомеру.

public class ThisClass{ 
    Stopwatch sw = new Stopwatch(); 

    private void button6_Click(object sender, EventArgs e){ 
    sw.start();//or sw.Restart() 
    } 

    private void button5_Click(object sender, EventArgs e){ 
    //stop 
    sw.Stop(); 
    int numSeconds=sw.ElapsedSeconds;//or other members of sw 
    } 

}//end class 

Это важно, чтобы объект Stopwatch быть в том же пространстве имен/объем в качестве кнопки пресс-функций, так что они оба могут манипулировать один и тот же объект Stopwatch.

Смежные вопросы