定时器启用,当它不应该在vb.net中

时间:2017-09-26 05:12:15

标签: vb.net listview timer

点击按钮,我试图检查列表视图中的现有行。

  Private Sub Button8_Click(sender As Object, e As EventArgs) Handles 
    Button8.Click
 If ListViewExtended1.Items.Count >= 0 Then
    timer_firstROW.Enabled = True
 Else
    timer_firstROW.Enabled = False
End If
If ListViewExtended1.Items.Count >= 1 Then
    timer_SecondRow.Enabled = True
Else
    timer_SecondRow.Enabled = False
End If
If ListViewExtended1.Items.Count >= 2 Then
    Timer_ThirdRow.Enabled = True
Else
    Timer_ThirdRow.Enabled = False
End If
End Sub

问题是我在计时器的子

中得到了一个无效的参数exception = 1
  Private Sub timer_SecondRow_Tick(sender As Object, e As EventArgs) Handles 
    timer_SecondRow.Tick
    timer_SecondRow.Interval = ListViewExtended1.Items(1).SubItems(3).Text
 End Sub

所有定时器默认都是禁用的,所以当我们检查if else语句并且listview中只有1个索引为0的项时,我得到了该异常,这意味着启用了定时器,但为什么......

我尝试编写代码,将检查listview中的现有行,如果存在行,则启用定时器,然后定时器将发送连续消息thourgh serial。如果存在3行,则将启用3行计时器,并且发送具有间隔的消息将分配“ListViewExtended1.Items(1).SubItems(3).Text”。计时器代码:

  Private Sub Timer4_Tick(sender As Object, e As EventArgs) Handles 
 timer_firstROW.Tick
    timer_firstROW.Interval = ListViewExtended1.Items(0).SubItems(3).Text
    count_for_rx = ListViewExtended1.Items(0).SubItems(4).Text + 1
    ListViewExtended1.Items(0).SubItems(4).Text = count_for_rx
    GetValueFromlv2Row = "434D4431" & ListViewExtended1.Items(0).SubItems(0).Text & ListViewExtended1.Items(0).SubItems(1).Text & ListViewExtended1.Items(0).SubItems(2).Text.Replace(" ", "")
    Dim count As Short
    Dim bytestosend(0) As Byte
    For count = 1 To GetValueFromlv2Row.Length Step 2  'For count = 249 To Text4.Text * 2 Step 8 page 32
        bytestosend(0) = CLng("&H" & Mid(GetValueFromlv2Row, count, 2))
        spObj.Write(bytestosend, 0, bytestosend.Length)
    Next
    spObj.Write(Microsoft.VisualBasic.ControlChars.Cr)
End Sub

     Private Sub timer_SecondRow_Tick(sender As Object, e As EventArgs) 
  Handles timer_SecondRow.Tick
    If Not ListViewExtended1.Items(1).ToString() = "" Then
        timer_SecondRow.Interval = 
    ListViewExtended1.Items(1).SubItems(3).Text
        count_for_rx = ListViewExtended1.Items(1).SubItems(4).Text + 1
        ListViewExtended1.Items(1).SubItems(4).Text = count_for_rx
        GetValueFromlv2Row = "434D4431" & 
     ListViewExtended1.Items(1).SubItems(0).Text & 
    ListViewExtended1.Items(1).SubItems(1).Text & 
    ListViewExtended1.Items(1).SubItems(2).Text.Replace(" ", "")
        Dim count As Short
        Dim bytestosend(0) As Byte
        For count = 1 To GetValueFromlv2Row.Length Step 2  'For count = 249 
    To Text4.Text * 2 Step 8 page 32
            bytestosend(0) = CLng("&H" & Mid(GetValueFromlv2Row, count, 2))
            spObj.Write(bytestosend, 0, bytestosend.Length)
        Next
        spObj.Write(Microsoft.VisualBasic.ControlChars.Cr)
    Else
        timer_SecondRow.Enabled = False
    End If
 End Sub
 Private Sub Timer_ThirdRow_Tick(sender As Object, e As EventArgs) Handles 
Timer_ThirdRow.Tick
    Timer_ThirdRow.Interval = ListViewExtended1.Items(2).SubItems(3).Text
    count_for_rx = ListViewExtended1.Items(2).SubItems(4).Text + 1
    ListViewExtended1.Items(2).SubItems(4).Text = count_for_rx
    GetValueFromlv2Row = "434D4431" & 
  ListViewExtended1.Items(2).SubItems(0).Text & 
 ListViewExtended1.Items(2).SubItems(1).Text & 
ListViewExtended1.Items(2).SubItems(2).Text.Replace(" ", "")
    Dim count As Short
    Dim bytestosend(0) As Byte
    For count = 1 To GetValueFromlv2Row.Length Step 2  'For count = 249 To 
 Text4.Text * 2 Step 8 page 32
        bytestosend(0) = CLng("&H" & Mid(GetValueFromlv2Row, count, 2))
        spObj.Write(bytestosend, 0, bytestosend.Length)
    Next
    spObj.Write(Microsoft.VisualBasic.ControlChars.Cr)
End Sub

0 个答案:

没有答案