我有一个很长的ListView,其中包含我的应用当前正在运行的操作列表(每次一个操作)。 运行每个操作后,相关的ListViewItem以粗体显示。 ListView很长,所以我有垂直滚动条。
我的问题是如何向用户显示当前的运行操作,这意味着,如何将列表视图“滚动”到该项目。
我尝试手动选择行==>没用。 我使用了ListViewItem.EnsureVisible,但是每次更改都会使ListView闪烁。
有什么想法吗?感谢。
编辑:我添加了一些代码,即使代码非常简单。 每当新操作运行时,我都运行以下命令:
foreach (ListViewItem item in m_ListView.Items)
{
FontStyle style = ((index == value) ? FontStyle.Bold : FontStyle.Regular);
item.Font = new Font(item.Font, style);
if (index == value)
{
m_ModulesListView.EnsureVisible(index);
}
index++;
}
答案 0 :(得分:2)
你的意思是
listView1.EnsureVisible(listView1.Items.Count - 1);
答案 1 :(得分:2)
也许你应该在循环之前调用ListView.BeginUpdate()
并在循环之后调用ListView.EndUpdate()
。
答案 2 :(得分:0)
找到一个不错的solution。 它涉及使用win32,但它完成了这项工作。 显然,可以在列表上设置双缓冲来解决闪烁问题。 所以,使用EnsureVisible和双缓冲工作就好了。