2016-05-21 34 views
0

我想簡化此代碼:通過將其信息foreach循環的DataGridView在foreach循環

DataGridViewColumn column1 = dataGridView1.Columns[0]; 
column1.Width = 300; 
DataGridViewColumn column2 = dataGridView2.Columns[0]; 
column2.Width = 300; 

。我試過這個:

foreach (DataGridView dgv in this.Controls.OfType<DataGridView>()) 
{ 
DataGridViewColumn column = dgv.Columns[0]; 
column.Width = 300; 
}  

我沒有工作 - 你知道問題在哪裏嗎?

+0

你的代碼是正確的,有什麼問題?是代碼不適用於所有'DataGridView'? –

+0

是的,它不適用於所有DataGridViews。 –

回答

1

你應該在你的DataGridView

foreach (DataGridViewColumn column in dataGridView1.Columns) 
    column.Width = 300; 

的列集合循環,如果你需要僅環比前兩列然後

foreach (DataGridViewColumn column in dataGridView1.Columns 
                .Cast<DataGridViewColumn>() 
                .Take(2)) 
    column.Width = 300; 

或在您的形式

所有DataGridViews
foreach(DataGridView dgv in this.Controls.OfType<DataGridView>()) 
    foreach (DataGridViewColumn column in dgv.Columns) 
     column.Width = 300; 
+0

它不適用於所有DataGridView(僅適用於dataGridView1)。 –

+0

如果在同一個表單中有多個DataGridView,則只需在DataGridView類型的控件上添加第一個循環。相反,如果你想在應用程序中爲任何DataGridView調用一個泛型方法,那麼你需要通過DataGridView以通用方法格式化。你能解釋你的目標是什麼嗎? – Steve

+0

現在我明白了,謝謝:) –