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

Ami*_*all 2 c# datagridview

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

我已经搜索了很多,但无法找到可行的解决方案。

man*_*nji 5

在绑定到数据源集之前:

grd.AutoGenerateColumns = false;
Run Code Online (Sandbox Code Playgroud)

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

DataGridViewTextBoxColumn dgvc = new DataGridViewTextBoxColumn();
dgvc.HeaderText = "column_header";
dgvc.DataPropertyName = "column_name";
Run Code Online (Sandbox Code Playgroud)

创建一个 DataGridViewButtonColumn。

DataGridViewButtonColumn dgvbt = new DataGridViewButtonColumn();            
Run Code Online (Sandbox Code Playgroud)

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

dgvbt.HeaderText = "OK?";
dgvbt.Text = "ok";                        // works also when bound
dgvbt.UseColumnTextForButtonValue = true; //
Run Code Online (Sandbox Code Playgroud)

如果您希望您的列也有界并且每个按钮都有底层单元格的文本,请绑定它:

dgvbt.DataPropertyName = "column_bt";
Run Code Online (Sandbox Code Playgroud)

将创建的列添加到 DataGridView:

grd.Columns.Add(dgvc);
grd.Columns.Add(dgvbt);
Run Code Online (Sandbox Code Playgroud)

处理 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!");
        //...
    }
}
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅:

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