如何在Windows应用程序中已绑定的datagridview列的每一行中添加按钮?

时间:2009-09-11 09:56:28

标签: c# datagridview

我想在已绑定的datagridview的列的每一行中添加一个按钮,并向其添加一个事件(在VS 2005,Windows应用程序中)。

我经常搜索,但无法找到合适的解决方案。

1 个答案:

答案 0 :(得分:4)

在绑定到数据源集之前:

grd.AutoGenerateColumns = false;

创建所有DataGridView列并将它们绑定到数据源:

DataGridViewTextBoxColumn dgvc = new DataGridViewTextBoxColumn();
dgvc.HeaderText = "column_header";
dgvc.DataPropertyName = "column_name";

创建一个DataGridViewButtonColumn。

DataGridViewButtonColumn dgvbt = new DataGridViewButtonColumn();            

如果您希望此列未绑定,请在所有按钮上设置标题文本,相同文本:

dgvbt.HeaderText = "OK?";
dgvbt.Text = "ok";                        // works also when bound
dgvbt.UseColumnTextForButtonValue = true; //

如果您希望列也受限制,并且每个按钮都有基础单元格的文本,请将其绑定:

dgvbt.DataPropertyName = "column_bt";

将创建的列添加到DataGridView:

grd.Columns.Add(dgvc);
grd.Columns.Add(dgvbt);

处理DataGridView的CellClick事件:

grd.CellClick += new DataGridViewCellEventHandler(grd_CellClick);


void grd_CellClick(object sender, DataGridViewCellEventArgs e)
{
    if (e.RowIndex >= 0 && e.ColumnIndex == index_of_button_column)
    {
        MessageBox.Show(this, e.RowIndex.ToString() + " Clicked!");
        //...
    }
}

了解更多信息,请参阅:

http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewbuttoncolumn.aspx