Скрыть все строки в DataGridView с помощью VB - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь отфильтровать данные в DataGridView, и мне нужно скрыть все строки и столбцы. Я пытаюсь сделать это с помощью LINQ и лямбда-выражений списка зацикливания, потому что если я использую foreach, он медленный, когда я пытаюсь отфильтровать 3000 строк.

Следующий код выполняется без ошибок и отлично работает в c #, но не скрывает строки в vb:

c # отлично работает

dataGridView1.Columns.OfType<DataGridViewColumn>().ToList().ForEach(col => col.Visible = false);

vb не работает, не скрывает строки

datagrid.Rows.OfType(Of DataGridViewRow)().ToList().ForEach(Function(obj) obj.Visible = False)

когда я меняю функцию на Sub, отправь мне ошибку

datagrid.Rows.OfType(Of DataGridViewRow)().ToList().ForEach(Sub(obj) obj.Visible = False)

Я ищу эквивалентный код C # для vb или эквивалент действия.

1 Ответ

0 голосов
/ 11 июня 2019

Ваша первая проблема в том, что вы не выполняете одно и то же действие между примером c # и примерами vb.net. Столбцы могут быть удалены, поскольку нет дополнительного столбца, как в случае строк, если для Allow User To Add Rows установлено значение True. Это строка, которая появляется под вашими данными, которая позволяет пользователю вводить информацию в другую строку. Использование кода, который вы дали с помощью Sub , будет работать, если вы установите Allow user to add rows на False , но вы также можете просто проверить, что вы не пытаетесь установить EditRow к скрытому, что и дает ошибку, о которой вы говорили, но не передавали нам.

Если вам нужно оставить для Allow User To Add Rows значение True , просто используйте:

datagrid.Rows.OfType(Of DataGridViewRow)().ToList().ForEach(Sub(obj) If Not obj.IsNewRow Then obj.Visible = False)
...