我正在使用Windows窗体应用程序来创建gui。我创建了一个带有几个按钮的表单。名为button1的第一个按钮的功能是从硬盘读取视频并将其显示到图片框。 button1代码的最后一行是启用另一个按钮:
button2->Enabled = true;
Button1代码位于backgroundworker中。结果,它工作正常,但它不启用button2。在backgroundworker中使用按钮属性有问题吗?
答案 0 :(得分:1)
您必须使用BeginInvoke方法并使用Action委托,因为后台工作者DoWork不会修改UI。
private:
void DoWork(Object^ /*sender*/, EventArgs^ /*e*/ )
{
// some code
button2->BeginInvoke(gcnew Action(this, &MyForm::ModifyButton) );
}
void ModifyButton()
{
button2->Enabled = true;
}