如何向DataGridView中的列添加按钮

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绑定到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";