我试图让数据表的内容显示在列表框中。但是,我无法弄清楚我的代码有什么问题;我很确定我已经尝试过各种方式,但方法正确。我通过StackOverflow和互联网搜索一般的答案,但我找不到任何相关的信息。我一直得到的错误是:
未处理的类型' System.IndexOutOfRangeException'发生在System.Data.dll
中附加信息:位置1没有行。
If dt.Rows.Count > 0 Then
For i As Integer = 0 To dt.Rows.Count()
lstBoxSaved.Items.Add((dt.Rows(i).Item(0).ToString) & " " &
(dt.Rows(i).Item(1).ToString))
Next i
Else
MessageBox.Show("Please clear table", "error: too many entries")
End If
前段时间我能够为一个项目获得一些变体,但是我需要显示数据表中的所有项目。如果有一种更有效的方式来显示也可以工作的整行。
答案 0 :(得分:2)
你的问题在于你的循环被写入的方式超过了最后一个元素,这是引发异常的地方。例如,如果表中有1行,则行集合中的该行的索引为0.第一次循环发生时,dt.Rows(i)
将获取表中的第一行(索引0)。下次循环发生时,i
将为1.因此当dt.Rows(i)
再次发生时,它会尝试抓取表中的第二个行,这样做不存在。因此,因为行从0开始编制索引,所以要循环到行数减去1 。
For i As Integer = 0 To dt.Rows.Count()
应为For i As Integer = 0 To dt.Rows.Count() - 1
答案 1 :(得分:0)
尝试 Dim I As Integer 对于I = 0 To DataG1.Rows.Count - 2 Dim row As DataGridViewRow = DataG1.Rows(I)
Dim Check As DataGridViewCheckBoxCell = row.Cells(0)
Dim ID As DataGridViewTextBoxCell = row.Cells(1)
Dim Name As DataGridViewTextBoxCell = row.Cells(2)
If Check.Value = True Then
lstBoxSaved.Items.Add(ID ,Name )
End If
Next
Catch ex As Exception
End Try
if you notice i added checkbox to grid and check if the checkbox is checked and after that add select rows to list box .