mystery-user
mystery-user

Reputation: 115

DataGridView in foreach loop

I want to simplify this code:

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

by putting it info a foreach loop. I tried this:

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

I didn't work - do you know where is the problem?

Upvotes: 0

Views: 2420

Answers (1)

Steve
Steve

Reputation: 216243

You should loop over the Columns collection of your DataGridView

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

if you need to loop only over the first two columns then

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

or for all DataGridViews in your form

foreach(DataGridView dgv in this.Controls.OfType<DataGridView>())
     foreach (DataGridViewColumn column in dgv.Columns)
         column.Width = 300;

Upvotes: 1

Related Questions