2016-05-21 2 views
0

Ich möchte diesen Code vereinfachen:Datagridview in foreach-Schleife

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

durch info eine foreach-Schleife setzen. Ich habe das versucht:

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

Ich habe nicht gearbeitet - wissen Sie, wo ist das Problem?

+0

Ihr Code ist korrekt, was ist das Problem? funktioniert der Code nicht für alle 'DataGridView'? –

+0

Ja, es funktioniert nicht für alle DataGridViews. –

Antwort

1

sollten Sie Schleife über die Columns-Sammlung Ihrer Datagridview

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

wenn Sie brauchen nur in den ersten beiden Spalten Schleife dann

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

oder für alle DataGridViews in Ihrem Formular

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

Es funktioniert nicht für alle DataGridViews (funktioniert nur für DataGridView1). –

+0

Wenn Sie mehr als ein DataGridView im selben Formular haben, fügen Sie einfach eine erste Schleife über die Steuerelemente vom Typ DataGridView hinzu. Wenn Sie stattdessen eine generische Methode wünschen, die für jede DataGridView in Ihrer Anwendung aufgerufen werden kann, müssen Sie die DataGridView an die generische Methode übergeben. Können Sie erklären, was Ihr Ziel ist? – Steve

+0

Jetzt verstehe ich, danke :) –