我的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是否更好?或者一方面是否真的有任何好处?
感谢您的帮助。 布赖恩。
答案 0 :(得分:3)
foreach (DataGridViewColumn column in dataGridView1.Columns)
{
column.Visible = true;
}
使用foreach
,您可以直接对该对象执行操作。在这种情况下,唯一的好处是可读性,尽管它也不需要额外的int
变量。通常,foreach
可以更有效,因为它将实现留给单个集合类,当然,它知道枚举自身的最有效方法。示例:HashSet
请注意,因为Columns
属性是DataGridViewColumnCollection
,它实现IEnumerable
而不是IEnumerable<DataGridViewColumn>
或类似,所以您必须指定变量的类型。如果您说var
,您将获得object
。
我认为这是因为DataGridView
是在仿制药实施之前设计的。