2014-04-13 5 views
0

카운트 다운을했는데 지금 시간 체크를 추가하고 싶습니다. 분이 <1이고 초가! = 60이므로 00:59 시간은 주황색이어야하고 초가 작 으면 10이 적색이어야합니다.카운트 다운 확인 시간

하지만 작동하지 않습니다. 시간이 00:00:58 인 경우 항상 주황색으로 표시되지만 그 이유는 무엇입니까?

private int hours, minutes, seconds; 
private bool paused; 

private void button_Start_Click(object sender, EventArgs e) 
{ 

    button_Pause.Enabled = true; 
    button_Stop.Enabled = true; 

    if(paused != true) 
    { 
     hours = int.Parse(textBox_Hours.Text); 
     minutes = int.Parse(textBox_Minutes.Text); 
     seconds = int.Parse(textBox_Seconds.Text) + 1; 
     textBox_Hours.Enabled = false; 
     textBox_Minutes.Enabled = false; 
     textBox_Seconds.Enabled = false; 
     button_Start.Enabled = false; 
     timer_CountDown.Start(); 

    } 
} 


private void timer_CountDown_Tick(object sender, EventArgs e) 
{ 
    if(hours == 0 && minutes < 1) 
    { 
     label_Hours.ForeColor = Color.Red; 
     label_Minutes.ForeColor = Color.Red; 
     label_Seconds.ForeColor = Color.Red; 
     label8.ForeColor = Color.Red; 
     label10.ForeColor = Color.Red; 
    } 

    if(hours == 0 && minutes == 0 && seconds == 0) 
    { 
     timer_CountDown.Stop(); 
     textBox_Seconds.Enabled = true; 
     textBox_Minutes.Enabled = true; 
     textBox_Hours.Enabled = true; 
     button_Start.Enabled = true; 
    } 
    else 
    { 
     if (seconds < 1) 
     { 
      seconds = 59; 
      if (minutes < 1) 
      { 
       minutes = 59; 
       if (hours != 0) 
       { 
        hours -= 1; 
       } 
      } 
      else 
      { 
       minutes -= 1; 
      } 
     } 
     else 
     { 
      seconds -= 1; 
     } 

     if(hours > 9) 
     { 
      label_Hours.Text = hours.ToString(); 
     } 
     else { label_Hours.Text = "0" + hours.ToString(); } 

     if(minutes > 9) 
     { 
      label_Minutes.Text = minutes.ToString(); 
     } 
     else { label_Minutes.Text = "0" + minutes.ToString(); } 

     if(seconds > 9) 
     { 
      label_Seconds.Text = seconds.ToString(); 
     } 
     else { label_Seconds.Text = "0" + seconds.ToString(); } 
    } 
} 

타이머 Intervall 당신은 일을 복잡하게 걸쳐있어 1000

+0

'PadLeft()'함수 또는 더 나은 숫자 형식 문자열을보십시오. – SLaks

답변

1

입니다. TimeSpan 유형을 사용하고 hours, minutes, seconds을 제거하지 않는 이유는 무엇입니까?

private TimeSpan countDownTime = TimeSpan.Zero; 

private void timer_CountDown_Tick(object sender, EventArgs e) 
{ 
    if(countDownTime == TimeSpan.Zero) 
    { 
     timer_CountDown.Stop(); 
     textBox_Seconds.Enabled = true; 
     textBox_Minutes.Enabled = true; 
     textBox_Hours.Enabled = true; 
     button_Start.Enabled = true; 
     return; 
    } 

    countDownTime = countDownTime.Add(TimeSpan.FromSeconds(1).Negate()); 

    label_Hours.Text = countDownTime.ToString("hh"); 
    label_Minutes.Text = countDownTime.ToString("mm"); 
    label_Seconds.Text = countDownTime.ToString("ss"); 

    if(countDownTime.TotalSeconds < 10) 
    { 
     label_Hours.ForeColor = Color.Red; 
     label_Minutes.ForeColor = Color.Red; 
     label_Seconds.ForeColor = Color.Red; 
     label8.ForeColor = Color.Red; 
     label10.ForeColor = Color.Red; 
    } 
    else if (countDownTime.TotalMinutes < 1) 
    { 
     label_Hours.ForeColor = Color.Orange; 
     label_Minutes.ForeColor = Color.Orange; 
     label_Seconds.ForeColor = Color.Orange; 
     label8.ForeColor = Color.Orange; 
     label10.ForeColor = Color.Orange; 
    } 
} 

private void button_Start_Click(object sender, EventArgs e) 
{ 
    button_Pause.Enabled = true; 
    button_Stop.Enabled = true; 

    if(paused != true) 
    { 
     int hours = int.Parse(textBox_Hours.Text); 
     int minutes = int.Parse(textBox_Minutes.Text); 
     int seconds = int.Parse(textBox_Seconds.Text) + 1; 

     this.countDownTime = new TimeSpan(hours,minutes,seconds);   

     textBox_Hours.Enabled = false; 
     textBox_Minutes.Enabled = false; 
     textBox_Seconds.Enabled = false; 
     button_Start.Enabled = false; 
     timer_CountDown.Start(); 
    } 
} 
+0

ts 란 무엇입니까? 분이 <주황색으로 1 분이고 분이 <10이면 레이블의 색을 빨강으로 변경해야합니다. – Proton

+0

당신은 1 분 미만의 주황색과 초 미만의 10 분의 1 초가 빨강일까요? –

+0

예, 그게 무슨 뜻입니다. – Proton