0

嗨,任何人都可以帮我解决这个错误,我现在已经坐了一个小时,但不知道如何解决这个错误,我的代码是

'Calculate the total of hours worked

'Declare a Date Time Variable   

    Dim TempDateTime As DateTime = Nothing
    'Declare a local time span variable
    Dim TempTimeSpan As New TimeSpan
    'Declare a array of type string and set the size equal to number of text boxes.
    Dim arr(6) As String
    'set the value for text boxs to array
    arr(0) = lblmontotal.Text
    arr(1) = lbltuestotal.Text
    arr(2) = lblwedtotal.Text
    arr(3) = lblthurstotal.Text
    arr(4) = lblfridtotal.Text

    For i As Integer = 0 To arr.Length - 1
        TempDateTime = CDate(arr(i))
        TempTimeSpan = TempTimeSpan.Add(New TimeSpan(TempDateTime.Hour, TempDateTime.Minute, 0))
    Next
    'showing the total time.
    lbltotalhours.Text = (TempTimeSpan.Hours & ":" & TempTimeSpan.Minutes)
4

2 回答 2

4

您没有为数组元素 5 和 6 分配任何内容。当您在循环中点击这些元素时,CDate将返回您描述的错误。

提示 - 像这样实例化您的数组。这样,编译器将为您计算长度并避免此类错误。

'set the value for text boxs to array
Dim arr As String() = {
    lblmontotal.Text,
    lbltuestotal.Text,
    lblwedtotal.Text,
    lblthurstotal.Text,
    lblfridtotal.Text
}

更新

关于你的第二个问题,有很多方法可以做到这一点,但最简单的是将值直接转换为 a TimeSpan,根本不用担心DateTime变量。

于 2013-06-18T20:40:56.127 回答
0

您已经为七个项目创建了一个数组,但是您只将值放在前五个中。当您遍历数组中的所有项目时,最后两个为空,因此它们不能转换为日期。

为五个项目创建一个数组:

Dim arr(4) As String
于 2013-06-18T20:43:58.987 回答