【发布时间】:2014-03-27 18:51:08
【问题描述】:
我需要使所选项目在列表视图中可见 我尝试在 Form::OnLoad: 中使用:
.Items.Add(lvItem);
....
lvItem.Selected = true;
....
.EnsureVisible(selectedIndex);
.Focus() // Make sure list view focused to allow navigate with hardware cursor keys immediate after form shows
这个方法没有像我预期的那样工作: 它只尝试滚动列表视图。所选项目仍然不可见,用户需要向下滚动 2 个项目。
这是错误还是功能?在 FF TopItem 属性中将该项目滚动到顶部(或尝试这样做)
Compact Framework 不支持此方法的每个平台的所有版本。
是否可以在 CF 中模拟此属性?我是直接 API 调用吗?
附:第二个问题:如果我尝试使用滚动条滚动焦点列表视图,则所选项目会阻止。
使用硬件键滚动不会阻止以前自动选择的项目。
【问题讨论】:
-
如果我没记错的话,EnsureVisible 没有正确考虑滚动条。我想我们只是调用了 EnsureVisible 三次(selectedIndex+1、selectedIndex-1 和 selectedIndex),并使用适当的边界检查第一项和最后一项。不是答案,因为我目前没有时间验证它。
-
+2 作品。所选项目现在是列表视图中的最后一个可见项。正如我所提到的,我应该让它永远是最重要的(解决第二个问题)
-
如果它有效,我会把它作为一个 asnwer 删除。我不清楚你对第二期的要求是什么,你能澄清一下吗?
-
我可以澄清问题:所选项目必须始终显示在顶部。如果我尝试在光标键选择丢失并且顶部项目被选中的情况下移动。
-
你试过设置
lvItem.Focused = True以及lvItem.Selected = true和EnsureVisible吗?
标签: c# winforms listview scroll compact-framework