我有一个带有文本框的WindowsForm MDI应用程序,其中显示来自串行端口的文本流。
默认情况下,此文本框会在每次向其附加文本时自动滚动到文本框的末尾。
但是我添加了一个停止自动滚动的选项,这里是代码:
public java.util.List<java.util.Map<java.lang.CharSequence,java.lang.CharSequence>> attributes;
使用我的方法ResumeDrawing和SuspendDrawing让文本框在追加时保持在他的位置。但这也增加了闪烁的问题。你知道我怎么解决这些问题吗?
谢谢你的帮助:)
答案 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。