Winforms:当有垂直滚动条时,如何以编程方式显示C#listview中的最后一项?

StackOverflow https://stackoverflow.com/questions/616491

当有垂直滚动条时,如何以编程方式显示C#listview中的最后一项?我研究了与listviews相关的所有方法,但找不到任何东西。

有帮助吗?

解决方案

滚动列表视图实际上并不容易/可能。您需要告诉该项目以确保它可见。

var items = listView.Items;
var last = items[items.Count-1];
last.EnsureVisible();

其他提示

this.listView1.Items[this.listView1.Items.Count - 1].EnsureVisible();  

ListViewItem.EnsureVisible()

的Winforms:

您是否尝试在ListView的Items集合的最后一项中将Selected值设置为TRUE?

我认为这样做会关注最后一项......如果是必要的话,请向下滚动。 但我没有尝试过自己。

编辑: 这样可以解决问题:

Me.ListView1.Items(Me.ListView1.Items.Count - 1).EnsureVisible()

WPF还是WinForms?

在WPF中,你得到 ListViewItem 并在其上调用 BringIntoView

以下hack将选择并显示最后一个ListView项。
不知道为什么这样有效,但它确实有效。

listview.SelectedIndices.Clear();  
listview.FocusedItem = listview.Items[listview.Items.Count - 1];  
listview.FocusedItem.Selected = true;  
listview.BeginInvoke((MethodInvoker)delegate { 
    listview.FocusedItem.EnsureVisible(); 
});

此外,如果您不想显示水平滚动条,则需要在调用 BeginInvoke 之前调整ListView列的大小以适合ListView的 ClientArea 宽度。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top