为什么 VB6 FlexGrid 抛出 运行 时间错误 381 'Subscript out of range'?

Why is VB6 FlexGrid throwing a run-time error 381 'Subscript out of range'?

我不太了解 VB6,但我目前在双击 FlexGrid 中的单元格时遇到问题。我看这是一个被问过很多次的热门问题,但是大部分用户都在围着格子转。我的更简单,但是它崩溃了。

网格有 3 行和 3 列。 双击第一行中的任何列时,它工作正常。但是当我到达其他人时,它会引发错误。错误说:

Run-time error '381':

Subscript out of range.

它当前在以下行崩溃,行为 2,列为 3:

TextMatrix = myFlexGrid.TextMatrix(row, col)

我只是想知道为什么当行和列的索引都很好时它会崩溃。我以为它可能是从零开始的,但是当点击第一行的第三个单元格时,它工作正常。

有没有办法在调试器 (Microsoft Visual Basic 6.0) 中查看网格的内容?

flexgrid 的行和列确实是基于 0 的。但是,如果您采用 FlexGrid.Row 和 FlexGrid.Col 值,那么它们将始终在范围内,因为它们表示当前选定的单元格。这样的事情应该有效:

private sub FlexGrid_DblClick()
    dim CellContents as string
    with FlexGrid
        CellContents = .TextMatrix(.Row,.Col)
    end with
end sub

尽管如果您对所选单元格感兴趣,您始终可以只使用

CellContents = FlexGrid.Text

您可以在执行时使用 IDE 的 "Locals" window 在 运行 时获取有关任何控件(或变量)的大量信息暂停。不幸的是,这似乎不包括 flexgrid 的单元格内容。不过,您始终可以使用即时 window 来感受网格,使用像 ? FlexGrid.TextMatrix(0,2) 这样的行来查找导致错误的值和限制。