附加文本时避免TextBox闪烁

时间:2015-06-26 13:43:20

标签: c# .net winforms flicker autoscroll

我有一个带有文本框的WindowsForm MDI应用程序,其中显示来自串行端口的文本流。

默认情况下,此文本框会在每次向其附加文本时自动滚动到文本框的末尾。

但是我添加了一个停止自动滚动的选项,这里是代码:

public java.util.List<java.util.Map<java.lang.CharSequence,java.lang.CharSequence>> attributes;

使用我的方法ResumeDrawing和SuspendDrawing让文本框在追加时保持在他的位置。但这也增加了闪烁的问题。你知道我怎么解决这些问题吗?

谢谢你的帮助:)

1 个答案:

答案 0 :(得分:0)

感谢您提出这个问题:Flicker free TextBox

解决方案是在表单或控件上启用WS_EX_COMPOSITED参数。

为此,您只需将其添加到表单或派生控件类中:

private const int WS_EX_COMPOSITED = 0x02000000; 
protected override CreateParams CreateParams {
  get {
    CreateParams cp = base.CreateParams;
    cp.ExStyle |= WS_EX_COMPOSITED;
    return cp;
  }
} 

别忘了也启用DoubleBuffering。