2009-06-08 4 views
1

Я бы хотел добавить динамический столбец в DataGridView после того, как он был заполнен. Столбец кнопки отображается после его добавления, но когда я пытаюсь выполнить цикл в строках DataGridView, я получаю нуль для кнопки в каждой ячейке.Win form DataGridView динамически добавляющая колонка кнопок

var buttonCol = new DataGridViewButtonColumn(); 
buttonCol.Name = "ButtonColumnName"; 
buttonCol.HeaderText = "Header"; 
buttonCol.Text = "Button Text"; 

dataGridView.Columns.Add(buttonCol); 

foreach (DataGridViewRow row in dataGridView.Rows) 
{ 
    var button = (Button)row.Cells["ButtonColumnName"].Value; 
    // button is null here! 
} 

ответ

4

Я попробовал точно такую ​​же вещь некоторое время назад и не мог заставить ее работать; мое решение (как это было просто тестовое приложение) состояло в том, чтобы изменить цвет фона ячейки кнопки и проверить на это. Довольно ужасно. Однако, оглядываясь на код, вы пробовали лить row.Cells["ButtonColumnName"] на DataGridViewButtonCell, а затем проверяете свойства на этом?

0

Использование

foreach (DataGridViewRow row in dataGridView.Rows) 
{ 
    DataGridViewButtonCell button = (row.Cells["ButtonColumnName"] as DataGridViewButtonCell);   
} 
4

Используйте это:

foreach (DataGridViewRow row in dataGridView.Rows) 
{ 
    // DataGridViewButtonCell button = (row.Cells["ButtonColumnName"] as DataGridViewButtonCell); 
    row.Cells["ButtonColumnName"].Value = "ButtonText"; 
} 
1

Вы должны добавить сильфона код в код, то вы можете увидеть " Button Text "на каждом боксе:

buttonCol.UseColumnTextForButtonValue = true;