richtextbox显示问题

睡神在睡觉 2008-07-30 12:02:46
private void BeginData_Click(object sender, EventArgs e)
{
toolStripStatusLabel1.Text = "解析中...请稍候...";
foreach (string MyFile in Directory.GetFiles(label4.Text, "20*.bin"))
{
……………………
richTextBox1.AppendText(MyFile + "解析完成" + "\n\r")
}
toolStripStatusLabel1.Text = "解析完成!";
}

以上这段代码中有问题么??
在点击butten后,toolStripStatusLabel1.Text的内容不变,richTextBox1.Text也不变,在butten_Click事件完成的时候toolStripStatusLabel1.Text显示解析完成,richTextBox1.Text把之前需要显示出来的所有数据一下子显示出来,这是什么原因?
...全文
114 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
睡神在睡觉 2008-07-30
  • 打赏
  • 举报
回复
楼上有点搞笑了,我当然知道你说的结果了,我是想知道怎么能解决这个问题
freewind0521 2008-07-30
  • 打赏
  • 举报
回复
richTextBox1.Text不会变得,要本次事件执行完成之后才会变,所以只可能显示出解析完成
如果你把toolStripStatusLabel1.Text = "解析完成!"; 去掉,则在解析完成后可以看到
toolStripStatusLabel1显示委 "解析中...请稍候...";
睡神在睡觉 2008-07-30
  • 打赏
  • 举报
回复
解决了,Application.DoEvents(),就避免多线程了。散分
wdgphc 2008-07-30
  • 打赏
  • 举报
回复
private void BeginData_Click(object sender, EventArgs e)
{
toolStripStatusLabel1.Text = "解析中...请稍候...";
foreach (string MyFile in Directory.GetFiles(label4.Text, "20*.bin"))
{
……………………
richTextBox1.AppendText(MyFile + "解析完成" + "\n\r")
Thread.Sleep(100);
Application.DoEvents();

}
toolStripStatusLabel1.Text = "解析完成!";
}
睡神在睡觉 2008-07-30
  • 打赏
  • 举报
回复
尽量避免多线程,单线程不能实现这个功能么?感觉应该可以,我认为应该是上一个动作没执行完下一个动作又开始了,覆盖掉上一个动作,所以才没显示出来,我试着在显示后面加个大循环,譬如32位整型最大值循环,我套两层,似乎没能解决问题,不知道有没有更好的方法,最好是单线程的
smartstar2005 2008-07-30
  • 打赏
  • 举报
回复
明白了楼主的意思。这应该是个多线程的问题。

建议用另外一个进程解析数据,数据解析的步骤以消息方式发送到主窗口。在主窗口中显示就可以了。

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧