加速向TextBox添加文本

时间:2014-02-11 10:28:32

标签: c# .net string performance textbox

我有代码将TexBox的文本设置为

 textBox1.Text = s;

其中 s 是一个字符串,其字符数超过100,000,并且在textBox上显示文本需要很长时间。

有人有解决方案让它更快吗?

2 个答案:

答案 0 :(得分:2)

为此,将s字符串拆分为多个字符串,并使用AppendText添加这些子字符串,如果选中MSDN,您会看到:

AppendText方法允许用户在不使用文本连接的情况下将文本附加到文本控件的内容,当需要多个连接时,可以产生更好的性能

 public string s = "Put you terribly long string here";

    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        //For responsiveness 
        textBox1.BeginInvoke(new Action(() =>
        {
            //Here's your logic
            for (int i = 0; i < s.Length; i += 1000)
            {
                //This if is just for security
                if (i+1000 > s.Length)
                {
                    //Here's your AppendText
                    textBox1.AppendText(s.Substring(i, s.Length-i));
                }
                else
                {
                    //And it's here as well
                    textBox1.AppendText(s.Substring(i, 1000));
                }
            }
        }));
    }

我使用的值1000,你可以使用1500,2000,选择一个给出更好的结果。 希望这会有所帮助。

更新:

AppendText可用于WindowsForms和WPF,太糟糕了,无法在WindowsPhone和WinRT上找到它。所以我认为这个解决方案可以帮到你很多

答案 1 :(得分:0)

在子字符串中断开,当你将第一个子字符串传递给文本框时,它会在它连接到第二个之后出现,依此类推。 另一种方法是使用循环来设置值

for(int i=0;i<s.length; i++)
{
   textBox1.Text += s[i];
 }

这些可以帮助你