首页 > 解决方案 > ListView 不选择鼠标位置大于 32767 的项目

问题描述

问题是什么: 我有一个 ListView 放置在 AutoScroll 设置为 true 的面板上。当 ListView 的高度大于 32767 时,无法再选择项目。我发现这与鼠标 X 和 Y 在 32767(有符号 16 位)处翻转的事实有关。

我尝试过的: 使用以下代码,我希望通过使用 MousePosition 绕过 32767 限制的限制,然后通过代码选择项目:

Point p = listView1.PointToClient(MousePosition);
ListViewItem clickedItem = listView1.GetItemAt(p.X, p.Y);
if (clickedItem != null)
    clickedItem.Selected = true;

在“ListViewItem clickedItem = listView1.GetItemAt(pX, pY);”之后设置断点时 我看到实际上找到了正确的项目。但是,该项目永远不会被选中。我只是看到了奇怪的行为,比如选择了索引 21 的项目(但没有聚焦)而不是单击的项目,例如索引 2000。它的行为就像在 ListView 内部引发了异常。

有谁知道如何选择像素 32767 之外的项目?

标签: c#listviewmouse-position

解决方案


推荐阅读