How to add a button to a column in the DataGridView

白昼怎懂夜的黑 提交于 2019-11-27 02:43:46

问题


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;

The text appears but button never shows up.


回答1:


Assuming you are in Windows Forms, you need to add a DataGridViewButtonColumn to your DataGridView - Not directly to the DataTable.

This should occur somewhere after you bind the DataTable to the DataGridView.

Something like this should work:

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);
}

Of course you will have to handle the CellClick event of the grid to do anything with the button.

Add this somewhere in your DataGridView Initialization code

dataGridViewSoftware.CellClick += dataGridViewSoftware_CellClick;

Then create the handler:

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



回答2:


Make it simple.

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);
}



回答3:


You can use the best method using below

                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";


来源:https://stackoverflow.com/questions/21191950/how-to-add-a-button-to-a-column-in-the-datagridview

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!