12

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

4

8 回答 8

13

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

var items = listView.Items;
var last = items[items.Count-1];
last.EnsureVisible();
于 2009-03-05T20:37:12.753 回答
6
this.listView1.Items[this.listView1.Items.Count - 1].EnsureVisible();  
于 2009-03-05T20:37:31.910 回答
1

WINFORMS:

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

我认为这样做将专注于最后一项......如果需要,向下滚动。但我自己没有试过。

编辑: 这可以解决问题:

Me.ListView1.Items(Me.ListView1.Items.Count - 1).EnsureVisible()
于 2009-03-05T20:35:38.963 回答
1

ListViewItem.EnsureVisible()

于 2009-03-05T20:36:25.890 回答
0

WPF 还是 WinForms?

在 WPF 中,您会得到ListViewItem并调用BringIntoView它。

于 2009-03-05T20:34:53.630 回答
0

这是一个使用 windows 功能隐藏水平和强制垂直显示的链接:

http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/4aa4dade-53a2-4e2e-a8b4-b4980da1f39c/

于 2009-09-15T21:53:11.260 回答
0

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

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

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

于 2011-03-13T07:41:45.133 回答
0

我有一个继承 ListView 的自定义控件,但由于它不公开内部 ListView,我无法使用上述items...EnsureVisible()解决方案。

Ctrl我通过将+End键直接发送到该控件以手动将滚动固定到底部来解决某种工作:

logMsgList.Focus();
SendKeys.Send("^{END}");
于 2021-05-06T22:03:39.523 回答