日期:2014-05-18  浏览次数:20933 次

怎样提高TextBox控件的赋值效率
me现在正在开发一个串口通讯程序,有一个窗口,不断将串口发过来的
数据以十六进制显示在TextBox控件中:


我用的是以下语法

void ShowData(string DataStr)
{
  textBox1.Text += DataStr;

}

当串口数据过来的较慢时,没问题,而当达到每50ms来一次数据时,

程序对CPU的占用率就很高了.

我曾用PostMessage方法向编辑控件发送WM_CHAR消息的方法来试

没想到效率更低下,请问高人,有什么办法提高效率吗?

------解决方案--------------------
呵呵,没有人的眼睛会快到能看清50ms一次的数据的,
你可以先往一个string变量或者StringBuilder里添加,然后有一定延迟的把这个数据给TextBox,相当于你在收数据和显示数据之间有一个缓存。

DateTime last = DateTimeNow;
StringBuilder str = new StringBuilder();
void ShowData(string DataStr) 

if(DateTime.Now.Substract(last).TotalMilliSeconds > 500)
{
textBox1.Text += str.ToString();
str.Clear();
last = DateTime.Now;
}
else
{
str.Append(DataStr);
}



------解决方案--------------------
多行文本框用this.textBox1.AppendText("receive data");试试呢?

WinForms