【发布时间】:2010-10-08 13:32:30
【问题描述】:
我们有一些使用 .net Windows.Forms.TreeView 的代码。当视图中的项目被选中时,代码会这样做
treeView.BeginUpdate();
// ... some stuff ...
SendMessage(treeView.Handle, WM_HSCROLL, SB_LEFT, 0);
treeView.EndUpdate();
这是为了使树视图显示不会向右滚动(这是默认行为 - 我假设尽可能多地显示所选项目标签,但以隐藏一些树结构为代价)。不幸的是,当树视图包含 30,000 个项目并且在右键单击期间调用此代码并导致上下文菜单需要几秒钟才能出现时(足以令人不安)。
如果您删除 Begin/EndUpdate,上下文菜单会立即出现,但是当您看到视图向右移动然后返回左边缘时,您会感到烦人的抽搐。摆脱“推回左边缘”滚动条的建议遇到了一些阻力。
我已经尝试在树视图上过滤掉 SB_RIGHT,但当控件移动以显示标签时,这似乎并不实际。
因此有一种方法可以在选择项目时保持树视图在它的当前水平滚动位置时,这不涉及开始/ endupdate和相应的滞后或抽搐?
【问题讨论】:
标签: c# .net winforms user-interface treeview