Если вы используете связанный источник данных, который хотите захватить событие DataGridView.DataSourceChanged
.
Будет выглядеть так.
Private Sub DataGridView1_DataSourceChanged(sender As Object, e As System.EventArgs) Handles DataGridView1.DataSourceChanged
For Each row As DataGridViewRow In DirectCast(sender, DataGridView).Rows
If row.Cells("status").Value.ToString.ToLower.Contains("Closed") Then
row.Visible = False
End If
Next
End Sub
Если вы не используете источник данных, вы хотите, чтобы захватить DataGridView.RowsAdded
событие.
Будет выглядеть так.
Private Sub DataGridView1_RowsAdded(sender As Object, e As System.Windows.Forms.DataGridViewRowsAddedEventArgs) Handles DataGridView1.RowsAdded
Dim dg As DataGridView = sender
If dg.Columns.Count > 0 And e.RowIndex <> 0 Then
Dim theRow As DataGridViewRow = dg.Rows(e.RowIndex)
If theRow.Cells("status").Value.ToString.ToLower.Contains("closed") Then
theRow.Visible = False
End If
End If
End Sub
Сколько бы это замедлить, когда зацикливание 1000+ строк? .. Хочет реализовать что-то похожее на это и ищем наилучший подход, когда есть много строк, чтобы рассмотреть, может быть просто «Выбрать» правильные значения до привязки источника данных, но это больше работает, чем просто скрывать строки в моем коде. – nora
В наборе данных, который имеет средний ~ 55 миллисекунд без каких-либо манипуляций. (10 тыс. Строк). Кажется, что он занимает около ~ 10 раз, когда цикл проходит через строки и фильтруется после события DataSourceChanged. То, что я сделал бы с точки зрения производительности, - это фильтр, который является моим datasource, который является моим datasource dtb.DefaultView.RowFilter = «статус«% закрытого% », который имеет значительно лучшую производительность. Однако у ОП не было привязанного источника данных, поэтому у вас действительно нет возможности, кроме того, что вы перебираете строки и получаете удар по производительности. –