开发者

Textbox text from background worker?

I've been trying to figure out how to get my textbox's text or other property from within a background worker. Does anybody know how to do this? I cannot pass it as a param because it needs to be real-time. 开发者_如何学编程Thanks for the help!


I think you need to just invoke the property (pseudo-code):

private void bgw1_DoWork(object sender, DoWorkEventArgs e)
{
  // looping through stuff
  {
    this.Invoke(new MethodInvoker(delegate { Text = textBox1.Text; }));
  }
}


Use the ReportProgress method and event of the Background worker. That will switch to the correct thread for you.


Or if needed in WPF:

private void bgWorker_DoWork(object sender, DoWorkEventArgs e)
{
    string text = null;
    myTextBox.Dispatcher.Invoke(new Action(delegate()
    {
        text = myTextBox.Text;
    }));
}


i think you should use invoke method.

here's my example.

delegate void myDelegate(string name);
//...
private void writeToTextbox(string fCounter)
{
    if (this.InvokeRequired)
    {
        myDelegate textWriter = new myDelegate(displayFNums);
        this.Invoke(textWriter, new object[] { fCounter });
    }
    else
    {
        textbox1.Text = "Processing file: " + fileCounter + "of" + 100;
    }
}
//...

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
    //...
    writeToTextbox(fileCounter.ToString());
}

in dowork i manipulate some textfile and i inform the user about how many files i have processed so far.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜