Vb.net-数据表接收索引超出范围异常,即使索引存在

Vb.net-数据表接收索引超出范围异常,即使索引存在,vb.net,datatable,Vb.net,Datatable,有时,我的应用程序会抛出随机索引超出范围的异常,我有点不明白原因是什么 以下是一个屏幕截图: 正如您所看到的,索引(thi3)在行计数下,所以我看不出问题 编辑:这是我为datatable声明列的地方(在表单加载时发生) Edit2:我现在又收到一个错误,但是现在在图像中突出显示的行下面的一行,所以问题确实是(x)项的问题 如果InternalDataTable.Rows(thi3).Item(2)=“”,则 Edit3:再次出现错误,请参见此处的屏幕截图-(尚不能嵌入图像)我知道我应该发布代

有时,我的应用程序会抛出随机索引超出范围的异常,我有点不明白原因是什么

以下是一个屏幕截图:

正如您所看到的,索引(thi3)在行计数下,所以我看不出问题

编辑:这是我为datatable声明列的地方(在表单加载时发生)

Edit2:我现在又收到一个错误,但是现在在图像中突出显示的行下面的一行,所以问题确实是(x)项的问题

如果InternalDataTable.Rows(thi3).Item(2)=“”,则


Edit3:再次出现错误,请参见此处的屏幕截图-(尚不能嵌入图像)我知道我应该发布代码,但此图像显示列和行及项目都在索引中。

代码中的问题是,您可能插入了多行
,但没有任何

InternalDataTable.Rows(thi3).Item(0) = ""
.Item(0)
可能导致索引超出范围异常

此外,我建议您将整个if更改为以下内容:

if thi3 < InternalDataTable.Rows.Count andalso InternalDataTable.Columns.Count > 2  andalso InternalDataTable.rows(Thi3).Item(0) <> "" then
如果thi32和also InternalDataTable.Rows(thi3.Item(0)”,则

注意更改
更改您的代码,下次不要发布代码图像。直接把代码贴出来。谢谢,我将试一试。正如@Steve所说,您应该使用
来防止在
thi3
太大时计算第二个表达式。然而,从你的截图来看,这似乎不是问题所在。在这种情况下,问题可能是
InternalDataTable.Rows(thi3)
项不到一个
@Blackwood-是的,但请参见最新的屏幕截图。行和列都在索引中。我确实添加了列,并发布了添加它们的位置代码。但是,是的,我也想到了这一点。我正在再次运行我的应用程序,等待看它这次是否会抛出任何异常。。
if thi3 < InternalDataTable.Rows.Count andalso InternalDataTable.Columns.Count > 2  andalso InternalDataTable.rows(Thi3).Item(0) <> "" then