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 窗体中,您需要向DataGridView
添加一个DataGridViewButtonColumn
- 而不是直接添加到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);
}
当然,您必须处理网格的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.
}
}
让它变得简单。
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);
}
您可以使用以下方法使用最佳方法
gvEmployees.AutoGenerateColumns = false;
gvEmployees.ColumnCount = 4;
DataGridViewButtonColumn SelectButton = new DataGridViewButtonColumn();
SelectButton.Name = "Select";
SelectButton.Text = "Select";
SelectButton.UseColumnTextForButtonValue = true;
if (gvEmployees.Columns["Select"] == null)
{
gvEmployees.Columns.Insert(0, SelectButton);
}
DataGridViewButtonColumn DeleteButton = new DataGridViewButtonColumn();
DeleteButton.Name = "Delete";
DeleteButton.Text = "Delete";
DeleteButton.UseColumnTextForButtonValue = true;
if (gvEmployees.Columns["Delete"] == null)
{
gvEmployees.Columns.Insert(1, DeleteButton);
}
gvEmployees.Columns[2].Name = "EmployeeID";
gvEmployees.Columns[2].HeaderText = "EmployeeID";
gvEmployees.Columns[2].DataPropertyName = "EmployeeID";