Winforms:当有垂直滚动条时,如何以编程方式显示C#listview中的最后一项?
题
当有垂直滚动条时,如何以编程方式显示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
。
这是一个使用Windows功能隐藏水平和力垂直的链接:
http: //social.msdn.microsoft.com/Forums/en-US/winforms/thread/4aa4dade-53a2-4e2e-a8b4-b4980da1f39c/
以下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
宽度。
不隶属于 StackOverflow