簡體   English   中英

RichTextBox到BackgroundWorker

[英]RichTextBox to BackgroundWorker

如何在C#中將RichTextBox1的值扔給BackgroundWorker

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的代碼:

public void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) {
    HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument();
    foreach (string vr in richTextBox1.Lines)
    {
    ⋮
    }
}

出於上述原因,您無法傳遞RichTextBox,但可以傳遞字符串數組,即RichTextBox.Lines屬性,並對其進行迭代。

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)
    {

    }
}

通常,只有主UI線程才能與窗體和控件進行交互。

考慮將所需的所有數據傳遞給RunWorkerAsync方法-也許是RunWorkerAsync(richTextBox1.Lines.ToList())

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 []等,取決於您傳遞的內容)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM