【问题标题】:Listbox scroll is slow with scroll wheel带有滚轮的列表框滚动很慢
【发布时间】:2011-09-11 03:18:02
【问题描述】:

我有一个包含几千个条目(字符串)的 ListBox,使用鼠标滚轮滚动有点慢,而使用滚动条滚动非常快。 当我旋转鼠标滚轮时,列表开始非常缓慢地滚动大约一秒钟,然后很快。如果我再次旋转,它会再次发生。如果我滚动更长的时间(几秒钟),ListBox 会“记住”指令并在我停止旋转滚轮后继续滚动几秒钟。

【问题讨论】:

  • 快或慢,滚动浏览包含数千个条目的列表绝不是一件有趣或容易的任务。我希望你至少包含一个搜索框或过滤机制。
  • 嘎嘎声就像鼠标驱动程序的“增强”。在另一台机器上试试。
  • 这可能不是标准列表框的渲染问题。我刚刚在笔记本电脑的 ListBox 中添加了 100,000 个长字符串条目,鼠标滚轮工作得很好。到目前为止还不是一个明确的测试,但我很确定你还有其他事情要做(处理程序、后台线程、资源问题等......)。
  • 你用什么方法填充项目?您是设置 DataSource 还是通过 ListBox 控制的 Items 属性添加项目?换个方法试试,或许有帮助...

标签: c# performance listbox scroll


【解决方案1】:

您可以将记录划分为 100 个间隔。您可以修改事件 OnScroll 并检查边界,看看它是否在列表的底部,然后您可以加载下一个 100,依此类推。当你走向顶部时也是如此。

这是一种贫民区,但恕我直言,我认为它会更有效率。另外,它需要更多的逻辑。

为此,您可能需要更强大的系统。

【讨论】:

  • 不幸的是,垂直滚动条永远不会显示列表框包含多少项目。我的意思是,当您一次加载所有项目时,您可以通过垂直滚动条的大小看到列表的长度。
猜你喜欢
  • 1970-01-01
  • 2016-12-09
  • 1970-01-01
  • 1970-01-01
  • 2013-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多