如何向DataGridView中的列添加按钮

sof*_*fun 12 c# datatable datagridview datarow winforms

DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("Software Title", typeof(string)));
dt.Columns.Add(new DataColumn("Version", typeof(string)));
dt.Columns.Add(new DataColumn("Uninstall", typeof(System.Windows.Forms.Button)));

DataRow dr = dt.NewRow();
dr[0] = "App";
dr[1] = "1.0";
Button uninstall = new Button();
uninstall.Text = "Uninstall";

dr[2] = uninstall;

dt.Rows.Add(dr);

dataGridViewSoftware.DataSource = dt;
Run Code Online (Sandbox Code Playgroud)

出现文本但按钮从不显示.

Eva*_*n L 34

假设你是在Windows窗体中,你需要添加DataGridViewButtonColumn到您的DataGridView-不是直接到DataTable.

这应该在绑定DataTable到之后的某处发生DataGridView.

这样的事情应该有效:

DataGridViewButtonColumn uninstallButtonColumn = new DataGridViewButtonColumn();
uninstallButtonColumn.Name = "uninstall_column";
uninstallButtonColumn.Text = "Uninstall";
int columnIndex = 2;
if (dataGridViewSoftware.Columns["uninstall_column"] == null)
{
    dataGridViewSoftware.Columns.Insert(columnIndex, uninstallButtonColumn);
}
Run Code Online (Sandbox Code Playgroud)

当然,您必须处理CellClick网格事件以使用按钮执行任何操作.

在DataGridView初始化代码中的某处添加它

dataGridViewSoftware.CellClick += dataGridViewSoftware_CellClick;
Run Code Online (Sandbox Code Playgroud)

然后创建处理程序:

private void dataGridViewSoftware_CellClick(object sender, DataGridViewCellEventArgs e)
{
    if (e.ColumnIndex == dataGridViewSoftware.Columns["uninstall_column"].Index)
    {
        //Do something with your button.
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 应该编辑答案以包含“UseColumnTextForButtonValue”,否则按钮内部将没有任何文本。 (2认同)

Ram*_*rja 10

简单一点.

DataGridViewButtonColumn button = new DataGridViewButtonColumn();
{
    button.Name = "button";
    button.HeaderText = "Button";
    button.Text = "Button";
    button.UseColumnTextForButtonValue = true; //dont forget this line
    this.dataGridView1.Columns.Add(button);
}
Run Code Online (Sandbox Code Playgroud)

  • 如果没有`UseColumnTextForButtonValue`,每行中的按钮就没有任何内容! (3认同)