2012-01-09 87 views
45

我正在使用Winforms ListBox作爲事件的小列表,並且想要填充它以便可以看到最後一個事件(底部)。 SelectionMode設置爲無。用戶可以滾動列表,但我更喜歡它開始滾動到最後。如何滾動到ListBox的底部?

看着缺少支持像ScrollIntoView,EnsureVisible這樣的東西,我假設我需要創建一個自ListBox繼承的自定義控件;但是我不知道該從哪裏做些什麼。

有些指針?

+2

沒有正常的'listBox1.SelectedIndex = listBox1.Items.Count - 1;'不適合你嗎? – 2012-01-09 23:42:25

+1

'SelectionMode'沒有設置爲'None'時有效。我需要防止在此特定列表中選擇項目(以避免用戶混淆)。 – JYelton 2012-01-09 23:44:34

回答

75

我相信你可以很容易地通過適當地設置TopIndex屬性。

例如:

int visibleItems = listBox.ClientSize.Height/listBox.ItemHeight; 
listBox.TopIndex = Math.Max(listBox.Items.Count - visibleItems + 1, 0); 
+0

+1有點複雜,但那絕對不是你的錯!感謝解決方案和示例。 – JYelton 2012-01-10 00:05:02

+29

如果您只是將TopIndex設置爲最後一項,而不是擔心哪一項應該位於最上方,它似乎可以正常工作。 'listBox.TopIndex = listBox.Items.Count - 1;' – 2013-11-08 04:13:33

28

滾動至底部:

listbox.TopIndex = listbox.Items.Count - 1;

滾動至底部,並選擇最後一項:

listbox.SelectedIndex = listbox.Items.Count - 1;

不需要在這裏做複雜的計算,ListBox爲您糾正不正確的輸入。

+0

我更喜歡這個解決方案,簡單得多。謝謝! – 2017-03-22 13:59:34

+0

最佳解決方案。, – 2017-07-28 18:56:15