2014-11-03 56 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; 
    }