0

我正在尝试过滤 DataGridView 中的数据,我需要隐藏所有行和列。我尝试使用循环列表 LINQ 和 lambda 表达式来执行此操作,因为如果我使用 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)

我正在寻找与 vb 等效的代码 C# 或等效的操作。

4

1 回答 1

0

您的第一个问题是您没有在 c# 示例和 vb.net 示例之间执行相同的操作。Allow User To Add Rows列可以被删除,因为当设置为 True时,没有像行一样的额外列。这是显示在您的数据下方的行,允许用户将信息输入另一行。如果您设置为 False ,则使用您使用Sub提供的代码将起作用,但您也可以检查以确保您没有尝试将 设置为隐藏,这就是您谈到的错误但没有中继给我们。Allow user to add rowsEditRow

如果您需要将Allow User To Add Rows设置保持为True,则只需使用:

datagrid.Rows.OfType(Of DataGridViewRow)().ToList().ForEach(Sub(obj) If Not obj.IsNewRow Then obj.Visible = False)
于 2019-06-11T20:41:40.050 回答