Цикл через динамический datagridview -. rowcount (+) меняется во время цикла через него
(Приложение Windows Forms использует VB.Net)
У меня есть
DataGridView
со строками, отображающими расстояние и расчетное время между двумя точками, называемыми данными отрезка маршрута. Я реализовал CheckBox
если Selected
он должен зацикливаться на данных отрезка маршрута и Insert
данные шага ноги ниже текущих данных ноги маршрута.Если флажок установлен
Not Selected
, петля удалит все данные шага ноги-эта часть работает хорошо.Проблема заключается в том, что количество строк DataGridView изменяется каждый раз, когда добавляется шаг отрезка, и это приводит к пропуску большей части нижних линий детализации отрезка маршрута.
Я старался для каждого, ибо...Далее и в то время как циклы, чтобы попытаться выполнить цикл через динамически изменяющийся DataGridView. Это похоже на то, как если бы начало цикла делало снимок количества строк (RowCount) в начале цикла и сохраняло исходное количество строк в начале выполнения цикла.
Вот код, который я использую. Это полоса вниз от фактического кода, который я хочу использовать:
Private Sub chkShowRouteStep_CheckedChanged(sender As Object, e As EventArgs) Handles chkShowRouteStep.CheckedChanged Try If chkShowRouteStep.Checked Then 'Show Leg Steps For i As Integer = 0 To dgvQuote.RowCount - 1 txtRowCount.Text = i If dgvQuote.Rows(i).Cells(0).Value.ToString <> "" Then For j As Integer = 1 To 5 dgvQuote.Rows.Insert(i + j, "Step") Next End If i += 1 Next Else 'Hide Leg Steps For i As Integer = dgvQuote.RowCount - 1 To 0 Step -1 If dgvQuote.Rows(i).Cells(0).Value.ToString = "Step" Then dgvQuote.Rows.RemoveAt(i) End If Next End If Catch ex As Exception MsgBox(ex.Message) End Try End Sub
Есть ли способ, где я могу сделать петлю все строки, даже те, что были добавлены после запуска цикла?
Что я уже пробовал:
Цикл for
Цикл for each
Цикл while
Richard MacCutchan
Вам нужно настроить количество строк при перемещении по сетке данных для каждой добавленной или удаленной строки. Как правило, это плохая идея, так как слишком легко пропустить добавленную строку или пропустить ее при удалении.
Tino Fourie
Ричард, спасибо за ответ. Я пропустил оператор i += 1 в блоке кода, когда вставлял код поперек. Я отредактировал этот пост, чтобы включить шаг цикла For.