我正在尝试在重绘树视图时阻止树视图的垂直滚动条闪烁。我已经有了一个自定义树视图控件,它可以使用WndProc禁用绘图,它对树视图本身工作正常但不会在树视图中清除/创建节点时停止树视图的滚动条重新绘制和闪烁。
这有什么解决方案吗?以下是自定义树视图中的代码:
private bool enablePaint = true;
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case WM_PAINT:
if (enablePaint)
base.WndProc(ref m);
break;
case WM_ERASEBKGND:
break;
default:
base.WndProc(ref m);
break;
}
}
感谢您的帮助。
答案 0 :(得分:-2)
我使用LockWindowUpdate找到了解决方案:
[DllImport("user32.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);
[DllImport("user32.dll")]
private static extern bool LockWindowUpdate(IntPtr hWndLock);
public new void BeginUpdate()
{
SendMessage(this.Handle, WM_SETREDRAW, (IntPtr)0, IntPtr.Zero);
LockWindowUpdate(this.Handle);
}
public new void EndUpdate()
{
LockWindowUpdate(IntPtr.Zero);
SendMessage(this.Handle, WM_SETREDRAW, (IntPtr)1, IntPtr.Zero);
}