2014-06-16 46 views
-1

我创建了一个时间计算器,以便某人可以在24小时时间格式中输入文本框中的开始时间和另一个文本框中的结束时间,并计算差异并将其显示在标签中。循环24小时制时差

我怎样才能让我的代码做同样的事情,但与循环?我只是想缩短代码,而不是在一周中的每一天都有一段代码,下面显示的仅仅是星期一和星期二的代码。

//Monday 
TimeSpan Mon1In, Mon1Out; 
if (!TimeSpan.TryParse(TextBoxInMon1.Text, out Mon1In)) 
    Mon1In = default(TimeSpan); 
if (!TimeSpan.TryParse(TextBoxOutMon1.Text, out Mon1Out)) 
    Mon1Out = default(TimeSpan); 
MonLabel1.Text = (Mon1Out - Mon1In).TotalHours.ToString("f2"); 

//Tuesday 
TimeSpan Tues1In, Tues1Out; 
if (!TimeSpan.TryParse(TextBoxInTues1.Text, out Tues1In)) 
    Tues1In = default(TimeSpan); 
if (!TimeSpan.TryParse(TextBoxOutTues1.Text, out Tues1Out)) 
    Tues1Out = default(TimeSpan); 
TuesLabel1.Text = (Tues1Out - Tues1In).TotalHours.ToString("f2"); 
+0

为什么每天都有不同的代码? – Kami

回答

2

您可以制作一个功能。这被称为refactoring

private void GetTimeValues(TextBox txtIn, TextBox txtOut, 
    out TimeSpan inTime, out Timespan outTime) 
{ 
    if (!TimeSpan.TryParse(txtIn.Text, out inTime)) 
     inTime = default(TimeSpan); 
    if (!TimeSpan.TryParse(txtOut.Text, out outTime)) 
     outTime = default(TimeSpan); 
} 

然后调用该函数并设置您的标签。

TimeSpan Mon1In, Mon1Out; 
GetTimeValues(TextBoxInMon1, TextBoxOutMon1, out Mon1In, out Mon1Out); 
MonLabel1.Text = (Mon1Out - Mon1In).TotalHours.ToString("f2"); 

您应该使用更具描述性的函数名称,这只是我想到的第一件事情。

您也可以在函数中包含标签逻辑,只需要以相同的方式将信息编入一行即可。