首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >RichTextBox到BackgroundWorker

RichTextBox到BackgroundWorker
EN

Stack Overflow用户
提问于 2012-12-24 10:52:28
回答 3查看 1K关注 0票数 0

如何将RichTextBox1的值赋给C#中的BackgroundWorker

代码语言:javascript
运行
复制
public void button4_Click(object sender, EventArgs e)
{
    if (String.IsNullOrEmpty(richTextBox1.Text.Trim())){
        MessageBox.Show("No value in RichTextBox?");
        return;
    }

    if (backgroundWorker1.IsBusy != true)
    {
        // Start the asynchronous operation.
        backgroundWorker1.RunWorkerAsync(richTextBox1);
    }

下面是我的BackgroundWorker的代码:

代码语言:javascript
运行
复制
public void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) {
    HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument();
    foreach (string vr in richTextBox1.Lines)
    {
    ⋮
    }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-24 14:00:33

代码语言:javascript
运行
复制
private void button1_Click(object sender, EventArgs e)
    {
        backgroundWorker1.RunWorkerAsync(richTextBox1.Text);

    }

    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    {
        string text = (string)e.Argument;
        MessageBox.Show(text);

    }

文本将作为对象e.argument发送。要检索它,请将e.argument转换回字符串(或string[]等,具体取决于您传递的内容)

票数 1
EN

Stack Overflow用户

发布于 2012-12-24 14:20:55

由于上面给出的原因,您不能传递RichTextBox,但是您可以传入字符串数组,它是RichTextBox.Lines属性并遍历它。

代码语言:javascript
运行
复制
private void button1_Click(object sender, EventArgs e)
{
    bg.RunWorkerAsync(richTextBox1.Lines);
}

void bg_DoWork(object sender, DoWorkEventArgs e)
{
    string[] lines = (string[])e.Argument;
    foreach(string vr in lines)
    {

    }
}
票数 2
EN

Stack Overflow用户

发布于 2012-12-24 10:56:39

通常只有主UI线程可以与窗体和控件交互。

考虑将所需的所有数据传递给RunWorkerAsync方法--可能是RunWorkerAsync(richTextBox1.Lines.ToList())

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14016536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档