确保ListViewItem显示在ListView中

时间:2011-08-24 06:00:07

标签: c# winforms listview

我有一个很长的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++;
}

3 个答案:

答案 0 :(得分:2)

你的意思是

listView1.EnsureVisible(listView1.Items.Count - 1);

答案 1 :(得分:2)

也许你应该在循环之前调用ListView.BeginUpdate()并在循环之后调用ListView.EndUpdate()

答案 2 :(得分:0)

找到一个不错的solution。 它涉及使用win32,但它完成了这项工作。 显然,可以在列表上设置双缓冲来解决闪烁问题。 所以,使用EnsureVisible和双缓冲工作就好了。