1

我的 dataGridView 包含多列。我可以隐藏单个列,但我希望能够再次显示所有列。我可以用 for 语句做到这一点;但是,我认为我也应该能够使用 foreach 来做到这一点;但是,我无法正确使用语法。

我的工作声明:

for (int i = 0; i < dataGridView1.Columns.Count; i++)
{
    dataGridView1.Columns[i].Visible = true;
}

我在 foreach 语句中尝试的内容:

foreach (var column in dataGridView1.Columns)
{
    dataGridView1.Columns[column].Visible = true;
}

我知道我需要该列的索引值;但是,我错过了如何从列值中获取它。真正让我发疯的是,我知道我缺少一些简单的东西!

附带说明一下,为此使用 for 或 foreach 更好吗?或者真的有一个比另一个有什么好处吗?

谢谢您的帮助。布赖恩。

4

1 回答 1

3
foreach (DataGridViewColumn column in dataGridView1.Columns)
{
    column.Visible = true;
}

使用foreach,您可以直接作用于对象。在这种情况下,唯一的好处就是可读性,尽管它也消除了对额外int变量的需要。一般来说,foreach可以更有效,因为它将实现留给单个集合类,它当然知道枚举自身的最有效方法。例子:HashSet

请注意,由于Columns属性是 a DataGridViewColumnCollection,它实现IEnumerable而不是IEnumerable<DataGridViewColumn>类似,因此您必须指定变量的类型。如果你说var,你会得到object

我相信这是因为DataGridView是在实现泛型之前设计的。

于 2013-06-19T19:33:01.283 回答