繁体   English   中英

使用鼠标滚轮滚动ListView有时会否定滚动

[英]Scrolling ListView with mouse wheel occasionally negates scroll

我在使用Win32 listview时遇到了一些麻烦,我希望有人有一些智慧。 当滚动非常快(通过滚轮)时,有时候列表视图会滚动,只会跳回到所选项目以便它在视图中。 换句话说,列表撤消您的滚轮滚动,以显示列表顶部/底部的所选项目。 我意识到这听起来非常可疑,因为常见的控制措施已经被全世界殴打致死。

以下是您可以复制的方式:

  1. 在报告模式下加载一个列表视图,大约有500个左右的项目(确切的计数无关紧要,你只需要几个数据屏幕)。
  2. 选择列表中的项目并记住您选择的内容。
  3. 使用方向盘向下快速滚动列表(朝向您)。 我们正试图尽快将所选项目滚出视图。 您可能需要使用比通常在方向盘上使用更多的力。 这并不总是会发生。 您可能需要多次尝试。
  4. 滚动将正常完成,或者它将在最后改变主意并将您拉回到所选项目在屏幕上的视图。

常规和虚拟列表视图都会发生这种情况。 我在Windows 7旗舰版上测试了Win32和C#。

我制作了一个展示行为的小型WinForms应用程序 (需要.NET Framework 3.5)。 如果您不想从陌生人(我明白)运行任意可执行文件,请创建一个新的WinForms应用程序,在报表模式中删除listview,添加一个列,并在表单load事件中填充500个增加的整数:

private void Form1_Load(object sender, EventArgs e)
{
    for (int i = 0; i < 500; i++)
    {
        this.listView1.Items.Add(i.ToString());
    }
}

我注意到了这种行为,它似乎确实内置在列表视图控件中。 我看不出任何有用的功能的原因。 我在Sysinternals论坛上创建了一个帖子 它可能有用。

“我意识到这听起来非常可疑,因为共同的控制已经被全世界殴打致死。”

ListView并没有被打死,但它仍然是生命支持。 使用不同的控件。

它是一个自定义列表视图(覆盖绘图?)顺便说一句,我(从我的理解)面对自定义列表框的相同问题,并在这里找到一些帮助:

http://aviationxchange.net/wikis/winforms/net-color-listbox.aspx (文档末尾)。

希望这可以帮助。

我遇到了同样的问题,但我认为我找到了原因:我使用的工具允许你配置鼠标按钮( X-Mouse Button Control )。 通过禁用它,问题就像魔法一样消失了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM