2014-11-03 44 views
0

我正在使用windows窗体应用程序来创建gui。我用几个按钮创建了一个表单。名为button1的第一个按钮的功能是从硬盘读取视频并将其显示到picturebox。 button1代码的最后一行是启用另一个按钮:在后台启用按钮功能

button2->Enabled = true; 

Button1代码位于背景工作区内。这样的结果,它工作正常,但它不启用button2。在backgroundworker中使用按钮属性有问题吗?

回答

1

您必须使用BeginInvoke方法并使用Action委托,因为BackgroundWorker DoWork不会修改UI。

private: 
    void DoWork(Object^ /*sender*/, EventArgs^ /*e*/) 
    { 
     // some code 
     button2->BeginInvoke(gcnew Action(this, &MyForm::ModifyButton)); 
    } 

    void ModifyButton() 
    { 
     button2->Enabled = true; 
    }