有没有一种快速的方法将DataGridView的所有列设置为不可见?

3
我不想遍历所有列并将每个列的Visible属性设置为false。我想知道是否有一种快速的方法可以做到这一点。 谢谢!

1
我不知道除了使整个网格不可见之外还有什么解决方案。但是 grid.Columns.ForEach(g => g.visible = false) 可能是编写循环的最短方式。 - Chief Wiggum
@JamesBlond 我并不想隐藏整个网格,我只是想快速隐藏所有列,然后只显示其中的几列,比如 myGrid.Columns["ID"].Visible = myGrid.Columns["Name"].Visible = true。这样更简洁。谢谢你提供的方法,虽然它仍然有一些循环的感觉。 - King King
是的,它仍然是一个循环,但只有一行代码... - Chief Wiggum
@KingKing 如果您无法关闭数据源,那么任何解决方案都需要循环,因为您正在针对集合中单个列的可见属性进行操作,因此您至少需要访问它们一次。 - V4Vendetta
5个回答

6

您也可以像下面这样使用LINQ:

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

2
dataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None;
dataGridView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None;

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

0

老问题认为这可能对某些人有所帮助!这可能是一个简单的选择...

foreach (DataGridViewColumn col in myDgv.Columns)
{
    col.Visible = false;
}

同时你可以遍历行...

foreach (DataGridViewRow row in myDgv.Rows)
{
    // your code
}

0

有两个网格,大小和位置完全相同。

if(conditionMet)
{
   grid1.visible = false;
   grid2.visible = true;
}

0
将数据源设置为null,当你想要再次显示它时,可以将数据源重新设置。 或者你也可以将Gridview的visible属性设置为false,或将包含控件的Gridview设置为不可见。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接