如何避免树视图中的闪烁

时间:2010-11-09 09:28:16

标签: c# winforms treeview

如何避免树视图中的闪烁,

当节点的某些属性被更新时, 或者添加节点

2 个答案:

答案 0 :(得分:6)

尝试以下方法:

try
{
    treeView.BeginUpdate();

    // Update your tree view.
}
finally
{
    treeView.EndUpdate();
}

答案 1 :(得分:2)

我也是在打这个。这是我在那里搜索的解决方案。将其添加到您的treeview子类中。

    private const int WM_VSCROLL = 0x0115;
    private const int WM_HSCROLL = 0x0114;
    private const int SB_THUMBTRACK = 5;
    private const int SB_ENDSCROLL = 8;

    private const int skipMsgCount = 5;
    private int currentMsgCount;
    protected override void WndProc(ref Message m)
    {
        if (m.Msg == WM_VSCROLL || m.Msg == WM_HSCROLL)
        {

            var nfy = m.WParam.ToInt32() & 0xFFFF;
            if (nfy == SB_THUMBTRACK)
            {
                currentMsgCount++;
                if (currentMsgCount % skipMsgCount == 0)
                    base.WndProc(ref m);
                return;
            }
            if (nfy == SB_ENDSCROLL)
                currentMsgCount = 0;

            base.WndProc(ref m);
        }
        else
            base.WndProc(ref m);
    }

我在这里得到了这个想法:treeview scrollbar event

基本上我只是忽略了很大一部分滚动消息。它为我减少了很多闪烁。