C#如何在文本框中逐个显示可用数据

时间:2011-12-20 16:34:10

标签: c#

您好我正在使用HtmlAgilityPack使用c#从网络中删除一些数据。这是代码:

private void button1_Click(object sender, EventArgs e)
    {
        var url = this.textBox1.Text;
        var webGet = new HtmlWeb();
        var document = webGet.Load(url);

        var metaTags = document.DocumentNode.SelectNodes("//meta");
        if (metaTags != null)
        {
            foreach (var tag in metaTags)
            {
                var name = tag.Attributes["name"].Value;
                var content = tag.Attributes["content"].Value;

                this.textBox2.Text = name + " : " + content;
            }
        }
    }

从textbox1获取一个链接并显示输出到textbox2。它显示了最后可用的数据。我可以连接可用的数据,但它会立即显示所有数据。实际上我想显示一个数据,当其他数据可用时,其他人正在处理,以便用户可以实现报废进度。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

假设您的代码的前半部分是正确的,此逐个显示数据。最有可能的是,foreach循环执行得太快,您无法注意到“一个一个”的影响。

如果您需要显示每个结果足够长的时间以供某人阅读,您可以应用人为延迟。也许使用Timer或类似的东西。

另一种方法是使用多行文本框(例如RichTextBox)并将每个结果放在换行符上。或ComboBox,不会占用太多空间。这些选项允许您保留数据,而不必覆盖它。

答案 1 :(得分:0)

您可以使用Timer控制来延迟循环中下一个值的显示。

您也可以使用BackgroundWorker完成此操作。但是,这会增加代码的复杂性。请查看Beginners Guide to Threading in .NET: Part 5

或者您可以使用Thread.Sleep(xx),它将延迟执行您指定的毫秒数。

  Thread.Sleep(2000);
  this.textBox2.Text += name + " : " + content + Environment.NewLine;