更新数据网格视图中按钮的文本

use*_*042 3 datagridview backgroundworker winforms

我在 winform 上有一个 DataGridView。我在表单的加载方法中动态添加 DatagridViewButtonColumn,按钮名称为 btnAction,其上显示的文本为“Process”。

因此,网格中的每一行的最后一列都会有这个“处理”按钮。

在此按钮的单击事件中,我使用 BackgroundWorker 来调用进行一些计算的方法。计算结束后,我需要在网格的该行中将单击的按钮文本更新为“已处理”。请问我该如何实现?

谢谢。

Dav*_*all 5

您可以设置相关单元格的值,这将更新文本。

为此,您还必须UseColumnTextForButtonValue将列的属性设置为 false;

dataGridView[0,0].Value = "Processed";
Run Code Online (Sandbox Code Playgroud)

使用该代码,您只需更改列和行索引以匹配您的单元格,或以其他方式访问单元格。

此代码设置您的值,但正如您所说,您是在后台工作人员中执行此操作,您将需要更多代码来设置文本。

后台工作人员有一个事件RunWorkerCompleted,一旦工作人员完成,就会被解雇。在您的工作人员DoWork事件处理程序中,只有您的处理代码:

void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
    // Some long running processing
}
Run Code Online (Sandbox Code Playgroud)

然后在您的 RunWorkerCompleted 处理程序中,您可以设置值:

void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
    dataGridView1[0,0].Value = "Processed";
}
Run Code Online (Sandbox Code Playgroud)