2010-08-05 6 views
7

나는 이것으로 여러 가지를 보았지만 타이머 컨트롤, 세 개의 텍스트 상자 (시, 분, 초)가있는 윈도우 폼이 있으며 클릭 한 버튼을 기반으로하고 싶습니다. 2 시간에서 카운트 다운. 그래서 textbox1 (시간)을 클릭하면 바로 1, textBox2 (분)는 59, textBox3 (초)은 59가 될 것이며 모두 0을 읽을 때까지 모두 카운트 다운을 계속합니다.C로 카운트 다운 스톱워치 #

누군가 코드를 가지고 있습니까? 그것을 위해 공유합니까?

감사합니다.

+3

무엇을 시도 했습니까? 너 무슨 생각해? 당신이 C#에서 그것을하는 방법을 모르기 때문에 또는 당신이 의사 코드에서 그것을하는 방법을 모르기 때문에 당신은 꼼짝 못하게하고 있습니까? –

답변

3

TimeSpan 클래스를 사용할 수 있습니다. 2 시간으로 초기화하십시오. 타이머를 시작하면 현재 타이머를 가져옵니다. 그런 다음 Timer 객체로 매초마다 화면을 새로 고칩니다. 현재 시간을 가져 오기만하면됩니다. 나머지 시간은 다음과 같습니다.

TimeSpan remaining = twoHoursTimespan - (CurrentTime - StartTime);

3

TimeSpan에서 구성 요소의 압축을 풉니 다. 버튼을 클릭하자마자 현재 시간과 날짜를 기록하고이를 변수에 저장하십시오. 그런 다음 매 초마다 타이머가 시작 시간 이후로 지속 시간을 계산해야합니다.

IE : DateTime result = DateTime.Now.Subtract (StartingTime);

그런 다음 결과 TimeSpan의 일부를 사용하여 필드를 채 웁니다.

IE : int Hour = result.Hour; (또는 그와 비슷한 것).

부록 : 카운트 다운이 부정확해질 수 있으므로 매 초 수동으로 카운트 다운하지 마십시오.

0

이 자습서에서는 달성하려는 것을 잘 설명합니다. 그것은 당신에게, 어떤 주어진 시간에서 아래로 단지 2 시간 계산 할 수있는 옵션을 제공합니다

http://www.dreamincode.net/forums/topic/57482-countdown-timer/

. 물론 필요한 경우에만 2 시간으로 설정할 수 있습니다.

+4

나는이 혐오감을 가리 키기 위해 당신을 슬퍼 하겠지만 오늘은 기분이 좋다. :) – Diadistis

+1

@Diadistis - 너 무슨 소리 야;) 훌륭한 코드 샘플이야. 심지어 button1, button2 등의 기본 버튼 이름까지. –

+1

@Diadistis 나는 기사를 살펴보고 괜찮다고 생각했지만 ... 그 다음에 코드 중 일부를 보았고 동의한다! 그들은 Convert.ToInt32를 사용하고 있으며 예외를 잡아서 죄송합니다. Exception - int.TryPrase는 버전 2.0부터 왔습니다. (개인적으로 "if (paused! = true)"가 마음에 들지는 않지만 모릅니다. 그것은 특혜 것) – Samuel

0

여기 이웃 한 사람은 Cope Project article and project입니다. 귀하의 필요가 유연한 경우 귀하의 요구를 철저히 충족시킬 수도 있습니다.

0

죄송합니다. 정확한 답변이 아닐 수도 있지만이를 달성하려면 시간대를 사용해야합니다.

DateTime now = DateTime.Now; 

// get the time elapsed since we started the test 
// start date was set somewhere else before this code is called 
TimeSpan span = now - _startDate; 

// format the time left 
String timeleft = span.Hours > 0 ? String.Format("Time Left - {0}:{1:D2}:{2:D2}", span.Hours, span.Minutes, span.Seconds) : String.Format("Time Left - {0:D2}:{1:D2}", span.Minutes, span.Seconds);