我有一个未绑定的DataGridViewButtonColumn
,我想在用户执行一项操作(将过程标记为进行中或就绪)后更改每个按钮(和每行)上的文本。如何在不影响每一行的情况下更改一行中的按钮文本?因为我尝试使用单元格的名称,但随后所有行均受到影响
我已经尝试过
dataGridView1[e.RowIndex, e.ColumnIndex].Value = "new button text";
dataGridView1.CurrentCell.Value = "ABCD";
ColumnButton.Text = "in progress";
答案 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...";
}