Win形式DataGridView动态添加按钮列

时间:2009-06-08 09:52:12

标签: c# winforms datagridview

我想在填充后动态地向DataGridView添加一个按钮列。 添加它后,按钮列是可见的,但是当我尝试遍历DataGridView行时,每个单元格中的按钮都会返回null。

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 个答案:

答案 0 :(得分:4)

前一段时间我尝试了同样的事情但无法使其正常工作;我的解决方案(因为它只是一个测试应用程序)是改变按钮单元格的背景颜色并测试它。太可怕了。但是,回顾一下代码 - 您是否尝试将row.Cells["ButtonColumnName"]转换为DataGridViewButtonCell,然后检查其中的属性?

答案 1 :(得分:4)

使用此:

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

答案 2 :(得分:1)

您必须在代码中添加以下代码,然后您可以在每个按钮上看到“按钮文字”:

buttonCol.UseColumnTextForButtonValue = true;

答案 3 :(得分:0)

答案 4 :(得分:0)

使用

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