小编zul*_*fin的帖子

使用包含大量数据的文本框还原WinForm

我在C#(VS2010)中创建了一个包含(以及其他)文本框控件的表单.文本框可能在某些时候包含大量数据(约300万个字符).

当滚动或移动的周围没有遇到任何问题的形式,但是当窗体最小化并恢复回来,重绘序列(我相信)被触发引起的大约5-10秒的大滞后的重新绘制表格.

我已经尝试了几种解决方案:

  1. 使用双缓冲区 - 根据我所读到的,双缓冲仅适用于表单本身而不适用于其控件

    this.SetStyle(ControlStyles.DoubleBuffer, true); this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); this.SetStyle(ControlStyles.UserPaint, true);

  2. 禁用文本框redrew一次最小化使用:SendMessage(this.my_textBox.Handle, WM_SETREDRAW, false, 0); 并在表单恢复后启用.我注意到如果我不重新启用文本框重绘,表单重绘延迟也存在.

  3. 使用位图的手动双缓冲区 - 与#1类似的结果.

我在某处读到这个问题可能与文本框控件试图缩小或调整到数据量有关,但无法覆盖它.

我以前在MFC中有相同的项目,但没有遇到任何重复或滞后的问题.

请告诉我如何解决这个问题.

c# textbox restore repaint winforms

10
推荐指数
1
解决办法
366
查看次数

标签 统计

c# ×1

repaint ×1

restore ×1

textbox ×1

winforms ×1