如何避免树视图中的闪烁,
当节点的某些属性被更新时, 或者添加节点
答案 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
基本上我只是忽略了很大一部分滚动消息。它为我减少了很多闪烁。