我在winform上有一个DataGridView。我在表单的加载方法中动态添加DatagridViewButtonColumn,按钮名称为btnAction,文本显示为“Process”。
因此,网格中的每一行都会在最后一列中显示此“处理”按钮。
在此按钮的单击事件上,我使用BackgroundWorker调用执行某些计算的方法。计算结束后,我需要将单击按钮的文本更新为网格中该行中的“已处理”。我该如何做到这一点?
感谢。
答案 0 :(得分:3)
您可以设置相关单元格的值,这将更新文本。
为此,您必须将列的UseColumnTextForButtonValue
属性设置为false;
dataGridView[0,0].Value = "Processed";
使用该代码,您只需更改列和行索引以匹配您的单元格,或以其他方式访问单元格。
此代码设置您的值,但正如您所说,您在后台工作程序中执行此操作,您将需要更多代码来设置文本。
backgroundworker有一个事件RunWorkerCompleted
,一旦工人完成就会被触发。在您的工作人员DoWork
事件处理程序中只需要处理代码:
void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
// Some long running processing
}
然后在RunWorkerCompleted处理程序中设置值:
void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
dataGridView1[0,0].Value = "Processed";
}