我正在使用Winforms ListBox作为事件的小列表,并且想要填充它以便可以看到最后一个事件(底部)。 SelectionMode
设置为无。用户可以滚动列表,但我更喜欢它开始滚动到最后。如何滚动到ListBox的底部?
看着缺少支持像ScrollIntoView
,EnsureVisible
这样的东西,我假设我需要创建一个自ListBox继承的自定义控件;但是我不知道该从哪里做些什么。
有些指针?
我正在使用Winforms ListBox作为事件的小列表,并且想要填充它以便可以看到最后一个事件(底部)。 SelectionMode
设置为无。用户可以滚动列表,但我更喜欢它开始滚动到最后。如何滚动到ListBox的底部?
看着缺少支持像ScrollIntoView
,EnsureVisible
这样的东西,我假设我需要创建一个自ListBox继承的自定义控件;但是我不知道该从哪里做些什么。
有些指针?
我相信你可以很容易地通过适当地设置TopIndex
属性。
例如:
int visibleItems = listBox.ClientSize.Height/listBox.ItemHeight;
listBox.TopIndex = Math.Max(listBox.Items.Count - visibleItems + 1, 0);
+1有点复杂,但那绝对不是你的错!感谢解决方案和示例。 – JYelton 2012-01-10 00:05:02
如果您只是将TopIndex设置为最后一项,而不是担心哪一项应该位于最上方,它似乎可以正常工作。 'listBox.TopIndex = listBox.Items.Count - 1;' – 2013-11-08 04:13:33
滚动至底部:
listbox.TopIndex = listbox.Items.Count - 1;
滚动至底部,并选择最后一项:
listbox.SelectedIndex = listbox.Items.Count - 1;
不需要在这里做复杂的计算,ListBox为您纠正不正确的输入。
我更喜欢这个解决方案,简单得多。谢谢! – 2017-03-22 13:59:34
最佳解决方案。, – 2017-07-28 18:56:15
没有正常的'listBox1.SelectedIndex = listBox1.Items.Count - 1;'不适合你吗? – 2012-01-09 23:42:25
'SelectionMode'没有设置为'None'时有效。我需要防止在此特定列表中选择项目(以避免用户混淆)。 – JYelton 2012-01-09 23:44:34