2012-01-09 19 views
45

मैं घटनाओं की एक छोटी सूची के रूप में Winforms ListBox का उपयोग कर रहा हूं, और इसे पॉप्युलेट करना चाहता हूं ताकि अंतिम ईवेंट (नीचे) दिखाई दे। SelectionMode किसी के लिए सेट नहीं है। उपयोगकर्ता सूची को स्क्रॉल कर सकता है लेकिन मैं इसे अंत तक स्क्रॉल करना पसंद करूंगा।ListBox के नीचे स्क्रॉल कैसे करें?

ScrollIntoView, EnsureVisible जैसी चीज़ों के समर्थन की कमी को देखते हुए, मुझे लगता है कि मुझे लिस्टबॉक्स से प्राप्त एक कस्टम नियंत्रण बनाने की आवश्यकता होगी; हालांकि मुझे यकीन नहीं है कि वहां से क्या करना है।

कुछ पॉइंटर्स?

+2

सामान्य 'सूची बॉक्स 1। चयनित Index = listBox1.Items.Count - 1;' आपके लिए काम नहीं करता? –

+1

यह तब काम करता है जब 'चयन मोड' 'none' पर सेट नहीं होता है। मुझे इस विशेष सूची में आइटम चुनने से रोकने की आवश्यकता है (उपयोगकर्ता भ्रम से बचने के लिए)। – JYelton

उत्तर

75

मुझे विश्वास है कि आप TopIndex संपत्ति को उचित रूप से सेट करके आसानी से ऐसा कर सकते हैं।

उदाहरण के लिए:

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

+1 थोड़ा उलझन में है, लेकिन यह निश्चित रूप से आपकी गलती नहीं है! समाधान और उदाहरण के लिए धन्यवाद। – JYelton

+29

यदि आप वास्तव में शीर्ष पर होना चाहिए, तो चिंता करने की बजाय अंतिम आइटम पर 'टॉप इंडेक्स' सेट करें, उदाहरण के लिए यह ठीक काम करता है। 'listBox.TopIndex = listBox.Items.Count - 1; ' –

28

स्क्रॉल नीचे करने के लिए:

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

01:

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

नीचे तक स्क्रॉल करें, और पिछले आइटम का चयन करें

जटिल गणना करने की कोई आवश्यकता नहीं है, ListBox आपके लिए अनुचित इनपुट सुधारता है।

+0

मैं इस समाधान को बहुत आसान बनाता हूं। धन्यवाद! –

+0

बेस्ट समाधान।, –

संबंधित मुद्दे