Выиграй форму DataGridView динамически добавляя кнопку колонки - PullRequest
1 голос
/ 08 июня 2009

Я бы хотел динамически добавить столбец кнопки в DataGridView после его заполнения. Столбец кнопки виден после его добавления, но когда я пытаюсь пройтись по строкам 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!
}

Ответы [ 5 ]

4 голосов
/ 11 июля 2011

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

foreach (DataGridViewRow row in dataGridView.Rows) 
{ 
    // DataGridViewButtonCell button = (row.Cells["ButtonColumnName"] as DataGridViewButtonCell); 
    row.Cells["ButtonColumnName"].Value = "ButtonText";
} 
4 голосов
/ 08 июня 2009

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

1 голос
/ 09 февраля 2013

Вы должны добавить ниже код в вашем коде, тогда вы можете увидеть «Текст кнопки» на каждой кнопке:

buttonCol.UseColumnTextForButtonValue = true;
0 голосов
/ 08 июня 2009

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

foreach (DataGridViewRow row in dataGridView.Rows)
{
    DataGridViewButtonCell button = (row.Cells["ButtonColumnName"] as DataGridViewButtonCell);        
}
0 голосов
/ 08 июня 2009
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...