Доброго времени суток дорогие форумчане.
В топике Отрисовка грида в виртуальном режиме рассматривалось, как загрузить большое количество записей из БД. На тот момент все ОК.
Сейчас снова потребовалось врнуться к отображению в гриде записей в виртуальном режиме. При прокручивании колесика до конца записей грида, в коде
- Код: Выделить всё
Private Sub DataGridView1_CellValueNeeded(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellValueEventArgs) Handles DataGridView1.CellValueNeeded
Select Case e.ColumnIndex
Case 0
e.Value = ListOfRows(e.RowIndex).C1
Case 1
e.Value = ListOfRows(e.RowIndex).C2
Case 2
e.Value = ListOfRows(e.RowIndex).C3
End Select
End Sub
возникает ошибка:
- Код: Выделить всё
System.ArgumentOutOfRangeException не обработано пользовательским кодом
Message=Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции.
Имя параметра: index
ParamName=index
Source=mscorlib
StackTrace:
в System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)
в System.ThrowHelper.ThrowArgumentOutOfRangeException()
в System.Collections.Generic.List`1.get_Item(Int32 index)
в Динамический_грид.frmGrid.DataGridView1_CellValueNeeded(Object sender, DataGridViewCellValueEventArgs e) в C:\Users\Sergey\Documents\Visual Studio 2010\Projects\Динамический грид\Динамический грид\frmGrid.vb:строка 164
в System.Windows.Forms.DataGridView.OnCellValueNeeded(DataGridViewCellValueEventArgs e)
в System.Windows.Forms.DataGridView.OnCellValueNeeded(Int32 columnIndex, Int32 rowIndex)
в System.Windows.Forms.DataGridViewCell.GetValue(Int32 rowIndex)
в System.Windows.Forms.DataGridViewCell.PaintWork(Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, Int32 rowIndex, DataGridViewElementStates cellState, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts)
в System.Windows.Forms.DataGridViewRow.PaintCells(Graphics graphics, Rectangle clipBounds, Rectangle rowBounds, Int32 rowIndex, DataGridViewElementStates rowState, Boolean isFirstDisplayedRow, Boolean isLastVisibleRow, DataGridViewPaintParts paintParts)
в System.Windows.Forms.DataGridViewRow.Paint(Graphics graphics, Rectangle clipBounds, Rectangle rowBounds, Int32 rowIndex, DataGridViewElementStates rowState, Boolean isFirstDisplayedRow, Boolean isLastVisibleRow)
в System.Windows.Forms.DataGridView.PaintRows(Graphics g, Rectangle boundingRect, Rectangle clipRect, Boolean singleHorizontalBorderAdded)
в System.Windows.Forms.DataGridView.PaintGrid(Graphics g, Rectangle gridBounds, Rectangle clipRect, Boolean singleVerticalBorderAdded, Boolean singleHorizontalBorderAdded)
в System.Windows.Forms.DataGridView.OnPaint(PaintEventArgs e)
InnerException:
Во вложенном файле – пример для удобства. В нем загружается грид обычным и виртуальным методами.
Подскажите, как избежать ошибки?