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