单击时更改datagridview中的按钮文本

时间:2019-06-05 19:07:29

标签: c# button text

我有一个未绑定的DataGridViewButtonColumn,我想在用户执行一项操作(将过程标记为进行中或就绪)后更改每个按钮(和每行)上的文本。如何在不影响每一行的情况下更改一行中的按钮文本?因为我尝试使用单元格的名称,但随后所有行均受到影响

我已经尝试过

dataGridView1[e.RowIndex, e.ColumnIndex].Value = "new button text";
dataGridView1.CurrentCell.Value = "ABCD";
ColumnButton.Text = "in progress";

1 个答案:

答案 0 :(得分:0)

您说的是未绑定的DataGridView,但是我不确定您如何添加行。我假设您正在创建DataGridViewRow的实例,然后将DataGridViewButtonCell添加到按钮列的Cells属性中?

如果设置列(ColumnButton.Text = "in progress")的文本会更改所有单元格的文本,那么听起来好像您在UseColumnTextForButtonValue上将DataGridViewButtonCell设置为true一样。如果该属性设置为true,则更改单元格上的Value不会更新按钮的文本。

添加行时,只需将Value上的DataGridViewButtonCell设置为ColumnButton.Text,即可将其默认为列的文本。然后dataGridView1[e.RowIndex, e.ColumnIndex].Value = "new button text";应该可以工作。

private void PopulateDataGridView()
{
   // Assuming I have a DataGridView named dataGridView1 with only one column
   // which is a DataGridViewButtonColumn named ButtonColumn that I set up in
   // the "Add Columns" or "Edit Columns" window...
   var row = new DataGridViewRow();
   var btnCell = new DataGridViewButtonCell();

   // Instead of btnCell.UseColumnTextForButtonValue = true, do this to set the
   // text of the button to the text of the column by default.
   btnCell.Value = ButtonColumn.Text;

   row.Cells.Add(btnCell);   

   dataGridView1.Rows.Add(row);
}

private void dataGridView1_CellContentClick(
   object sender, 
   DataGridViewCellEventArgs e)
{
   dataGridView1[e.ColumnIndex, e.RowIndex].Value = "Loading...";
}