c# - 如何将按钮添加到 DataGridView 中的列

标签 c# winforms datagridview datatable datarow

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;

文本出现但按钮从未出现。

最佳答案

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

这应该发生在您将 DataTable 绑定(bind)到 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);
}

当然,您必须处理网格的 CellClick 事件才能对按钮执行任何操作。

将此添加到您的 DataGridView 初始化代码中的某处

dataGridViewSoftware.CellClick += dataGridViewSoftware_CellClick;

然后创建处理程序:

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

关于c# - 如何将按钮添加到 DataGridView 中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21191950/

相关文章:

c# - 第二次尝试从数据库读取会抛出异常?

c# - 如何在没有任何数据库的情况下保存我的 datagridview?

c# - Winforms - 在执行长时间运行的同步请求期间如何保持窗口完全绘制/响应?

c# - IEnumerable 的可能多重枚举。怎么解决?我需要解决吗?

c# - 在逗号分隔的字符串中查找重复条目的索引位置

c# - 如何在 EF 上运行 SQL 查询?

c# - 仅在选定 ListView 记录上显示右键单击选项 - Winforms C#.NET

c# - 从表单应用程序调用控制台应用程序的 `Main` 方法(通过按钮单击事件)

C# Gridview 第一行数据不返回

c# - 类似命名方法的.NET 扩展方法冲突解决?