2013-06-19 71 views
1

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

我的发言工作:

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

我无法想象一个人比其他人更好,但是Blorgbeard的答案下面的答案是可读性。 –

+0

我不确定but..did你尝试使用columne.ColumnIndex? – Elior

回答

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

随着foreach,你可以直接采取行动的对象。在这种情况下,唯一的好处是可读性,尽管它也不需要额外的变量。一般来说,foreach可以更高效,因为它将实现留给单个集合类,这当然知道枚举自己的最有效方式。例如:HashSet

注意,因为Columns属性是DataGridViewColumnCollection,它实现IEnumerable而非IEnumerable<DataGridViewColumn>或类似的,你必须指定变量的类型。如果你说var,你会得到object

我相信这是因为DataGridView是在仿制药实施之前设计的。

+0

确实很简单。谢谢你Blorgbeard!它像一个魅力。 – PHBeagle