我每周的每一天都有两个文本框,允许用户以这种格式输入开始时间和结束时间(hh:mm)(24小时制)。例如,如果用户在星期一的第一个文本框中输入1:35,在星期一的第二个文本框中输入3:30,则按“计算”按钮,它将返回小数1.92。它运行并将结果返回给标签,但我的错误处理有问题。
如果文本框保留为空,则在运行时会抛出错误并显示“字符串未被识别为有效的TimeSpan”。我如何解决这个问题,如果用户没有输入时间,它会假定为'0'或者不运行具有该特定空文本框的代码?
//Monday
TimeSpan Mon1In = TimeSpan.Parse(TextBoxInMon1.Text);
TimeSpan Mon1Out = TimeSpan.Parse(TextBoxOutMon1.Text);
MonLabel1.Text = (Mon1Out - Mon1In).TotalHours.ToString("f2");
//Tuesday
TimeSpan Tues1In = TimeSpan.Parse(TextBoxInTues1.Text);
TimeSpan Tues1Out = TimeSpan.Parse(TextBoxOutTues1.Text);
TuesLabel1.Text = (Tues1Out - Tues1In).TotalHours.ToString("f2");
//Wednesday
TimeSpan Wed1In = TimeSpan.Parse(TextBoxInWed1.Text);
TimeSpan Wed1Out = TimeSpan.Parse(TextBoxOutWed1.Text);
WedLabel1.Text = (Wed1Out - Wed1In).TotalHours.ToString("f2");
一直到星期五。
答案 0 :(得分:1)
你应该使用TimeSpan.TryParse
MSDN,其中out param是你想要的值,如果tryparse失败,你将TimeSpan设置为00:00:00。
//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");