Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winforms:当存在垂直滚动条时,如何以编程方式显示C#listview中的最后一项?_C#_Winforms_Listview_Scrollbar - Fatal编程技术网

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

Winforms:当存在垂直滚动条时,如何以编程方式显示C#listview中的最后一项?,c#,winforms,listview,scrollbar,C#,Winforms,Listview,Scrollbar,当存在垂直滚动条时,如何以编程方式显示C#listview中的最后一项?我已经研究了与ListView相关的所有方法,但找不到任何方法。WPF还是WinForms 在WPF中,您将获得ListViewItem,并在其上调用BringIntoView。WINFORMS: 是否尝试在ListView的Items集合的最后一项中将所选值设置为TRUE 我认为这样做将集中于最后一项。。。必要时向下滚动。 但我没有试过自己 编辑: 这就可以了: Me.ListView1.Items(Me.ListView

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

WPF还是WinForms

在WPF中,您将获得
ListViewItem
,并在其上调用
BringIntoView

WINFORMS:

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

我认为这样做将集中于最后一项。。。必要时向下滚动。 但我没有试过自己

编辑: 这就可以了:

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

ListViewItem.EnsureRevible()

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

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

这是一个链接,指向使用windows功能隐藏要始终显示的水平面和强制垂直面:


下面的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
宽度。我有一个自定义控件继承ListView,但由于它不公开内部ListView,所以我无法使用上述
项…EnsureRevible()
解决方案

我通过将Ctrl+End键直接发送到该控件来手动修复滚动至底部,从而解决了这一问题:

logMsgList.Focus();
SendKeys.Send("^{END}");

它设置了焦点,但没有自动滚动。还有其他想法吗?这段代码可以工作,但在我的CE设备上会显示一个水平条并将其隐藏(由于大小有限)。有没有办法放大水平滚动条?你需要考虑垂直滚动条的宽度。列不应使用ListView的所有宽度。。。为垂直滚动条节省一点时间。
logMsgList.Focus();
SendKeys.Send("^{END}");