来自后台工作人员的文本框文本?

发布于 2024-11-18 11:11:19 字数 79 浏览 3 评论 0原文

我一直在试图弄清楚如何从后台工作人员中获取文本框的文本或其他属性。有人知道该怎么做吗?我无法将其作为参数传递,因为它需要是实时的。感谢您的帮助!

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!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

殊姿 2024-11-25 11:11:19

我认为您只需要调用该属性(伪代码):

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

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; }));
  }
}
一向肩并 2024-11-25 11:11:19

使用后台工作程序的 ReportProgress 方法和事件。这将为您切换到正确的线程。

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

酒儿 2024-11-25 11:11:19

或者如果 WPF 中需要:

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

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;
    }));
}
你的呼吸 2024-11-25 11:11:19

我认为你应该使用调用方法。

这是我的例子。

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());
}

在 dowork 中,我操作一些文本文件,并通知用户到目前为止我已经处理了多少个文件。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文