2013-05-21 153 views
0

我不想循環遍歷所有列,並將每列的Visible設置爲false。我想知道是否有一個快速的方法來做到這一點。有沒有一種快速設置DataGridView的所有列不可見的方法?

謝謝!

+1

我不是意識到除了使整個網格不可見之外的任何解決方案。但'grid.Columns.ForEach(g => g.visible = false)'可能是編寫循環的最短路線。 –

+0

@JamesBlond我不打算隱藏所有的網格,我只想快速隱藏其所有列,然後我只設置它的幾列可見,如myGrid.Columns [「ID」]。Visible = myGrid.Columns [ 「Name」]。Visible = true。它更乾淨。儘管它仍然是某種循環,但感謝您的簡短方式。 –

+0

是的,它仍然是一個循環,但一個簡短的一行... –

回答

0

將數據源設置爲空,當您想再次顯示時,可以將數據源設置回。

或者您可以將Gridview可見的false或包含控件的gridview設置爲可見的false。

0

有兩個網格具有相同的確切大小和位置。

if(conditionMet) 
{ 
    grid1.visible = false; 
    grid2.visible = true; 
} 
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 
} 
1

你也可以如下使用LINQ:

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