如何以编程方式显示虚拟ListView中的底部行

本文关键字:ListView 底部 虚拟 显示 编程 方式 | 更新日期: 2023-09-27 18:30:01

我在Winforms中有一个虚拟ListView,它可以很好地显示数据库中的内容。项目被异步添加到数据库中,当我将滚动条拉到底部时,这些项目是可见的。

现在,我想确保无论何时异步线程添加到数据库,它都会更新ListView,以便它知道哪个索引应该是最底层的一行。在添加ListView对象之前,我可以使用ListBox来实现这一点,在ListBox中,我根据itemheight和ListBox height:设置哪个索引应该是顶部索引

int numItems = listBox1.ClientSize.Height / listBox1.ItemHeight;
if (listBox1.TopIndex == listBox1.Items.Count - numItems - 1)
    listBox1.TopIndex = listBox1.Items.Count - numItems + 1;

遗憾的是,ListView中既不存在ItemHeight,也不存在TopIndex。

但主要的问题是:我如何告诉虚拟ListView它应该显示特定范围的索引,或者确保显示某些索引?

如何以编程方式显示虚拟ListView中的底部行

您可以使用属性TopItem设置ListView中的顶部可见项(无论是否处于虚拟模式):

listView1.TopItem = listView1.Items[itemIndex];//itemIndex is the index of the item 
//you want to make visible as the top item.