我的問題是這樣的:訪問Windows從BackgroundWorker的DoWork的控制
我有我已經放在一個LayoutPanel Windows窗體,當形式加載,多個控件,如:文本框和標籤被添加到LayoutPanel。
然後在點擊一個按鈕,我需要處理用戶對這些動態創建的控件輸入的數據。對於該purpouse,我使用Backgroundworker,它應該採用這些控件並讀取它們的數據。
我的問題是Backgroundworker不允許我從DoWork方法訪問控件,但我需要這樣做,因爲我將報告操作的進度。
這裏是我的代碼部分,以澄清這一概念:
private void frmMyForm_Load(object sender, EventArgs e)
{
//I add multiple controls, this one is just for example
LayoutPanel1.add(TextBox1);
....
}
private void bgwBackground_DoWork(object sender, DoWorkEventArgs e)
{
foreach (Control controlOut in LayoutPanel1.Controls)
{
//do some stuff, this one is just for example
string myString = controlOut.Name; //-> Here is the error, cant access controls from different Thread.
}
}
設置文本簡單的只是使用委託,但如何讓整個父控制操縱子控件(只是爲了獲取信息,我不想設置任何數據,只需要獲取名稱,文本,類似的東西)。
希望我自己清楚,謝謝大家。
它的工作非常適合我,謝謝許多。 – lidermin 2010-08-12 16:50:15