【问题标题】:Horizontal scroll position when a winforms treevew item is selected选择 winforms treevew 项目时的水平滚动位置
【发布时间】: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


    【解决方案1】:

    您是否尝试过仅“按需”填充树的节点?

    这应该会导致树中的节点更少,从而更快地处理 BeginUpdate。

    【讨论】:

    • 很有趣,我得看看我的一个同事做了什么。我知道我在工作中的代码中看到过类似的东西。如果我能找到一个具有类似树节点数的工作示例,我将编辑我的回复并发布。
    猜你喜欢
    • 2010-11-05
    • 1970-01-01
    • 2013-06-19
    • 2015-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多