2011-04-26 21 views
52

मैं प्रोग्रामवेटिक रूप से ListView में पहली आइटम का चयन करने का प्रयास कर रहा हूं, लेकिन ऐसा प्रतीत नहीं होता है। मैं निम्नलिखित कोड का उपयोग कर रहा:प्रोग्रामव्यू में किसी सूची में किसी आइटम का चयन कैसे करें?

if (listView1.Items.Count > 0) 
    listView1.Items[0].Selected = true; 

असल में मैंने पहले इस समस्या को मिला है, लेकिन मैं याद नहीं कर सकते कि कैसे मैं इसे हल करने में कामयाब रहे!

उत्तर

68

सबसे अधिक संभावना, आइटम चयनित किया जा रहा है, तो आप सिर्फ यह नहीं बता सकता क्योंकि एक अलग नियंत्रण पर ध्यान केंद्रित किया जाता है। आपके आवेदन के डिज़ाइन के आधार पर आप इसे हल कर सकते हैं कि कुछ अलग-अलग तरीके हैं।

  1. सरल उपाय जब भी आपके प्रपत्र प्रदर्शित किया जाता है करने के लिए ListView पहले फोकस सेट करने के लिए है। उपयोगकर्ता आमतौर पर उन पर क्लिक करके नियंत्रण पर ध्यान केंद्रित करता है। हालांकि, आप यह भी निर्दिष्ट कर सकते हैं कि कौन से नियंत्रण प्रोग्रामेटिक रूप से फोकस करते हैं। ऐसा करने का एक तरीका नियंत्रण के टैब इंडेक्स को 0 पर सेट करना है (सबसे कम मान उस नियंत्रण को इंगित करता है जिसमें प्रारंभिक फोकस होगा)। आप Selected गुण सेट एक दूसरा संभावना आपके प्रपत्र के Load घटना में कोड की निम्न पंक्ति का उपयोग करने के लिए है, या तुरंत बाद:

    myListView.Select(); 
    

    इस समाधान के साथ समस्या यह है कि है चयनित आइटम नहीं रह हाइलाइट करके दिखाई जाएंगी जब उपयोगकर्ता आपके फॉर्म पर एक अलग नियंत्रण पर ध्यान केंद्रित करता है (जैसे टेक्स्टबॉक्स या बटन)।

  2. इसे ठीक करने के लिए, आपको पर HideSelection property को गलत पर नियंत्रण सेट करने की आवश्यकता होगी। इससे चयनित आइटम को पर पर हाइलाइट किया जाएगा, भले ही नियंत्रण फोकस खो देता है।

    नियंत्रण है जब ध्यान, चयनित आइटम की पृष्ठभूमि प्रणाली हाइलाइट रंग के साथ चित्रित किया जाएगा। जब नियंत्रण पर ध्यान केंद्रित नहीं करता है, तो चयनित आइटम की पृष्ठभूमि ग्रेड (या अक्षम) टेक्स्ट के लिए उपयोग किए गए सिस्टम रंग में चित्रित की जाएगी।

    आप, या कोड के माध्यम से इस संपत्ति या तो डिजाइन समय पर सेट कर सकते हैं:

    myListView.HideSelection = false; 
    
+1

+1, महान उत्तर के लिए धन्यवाद। – Homam

21
if (listView1.Items.Count > 0) 
{ 
    listView1.Items[0].Selected = true; 
    listView1.Select(); 
} 

सूची आइटम चयनित नहीं दिखाई देते हैं, जब तक कि नियंत्रण ध्यान केंद्रित किया (या आप गलत पर HideSelection गुण सेट)

+3

कोड के टुकड़े जवाब के रूप में गिनती नहीं है। –

+4

लेकिन यह सवाल का जवाब दिया और यह स्वयं व्याख्यात्मक है :-) – VikciaR

+7

नहीं, यह आत्म-व्याख्यात्मक नहीं है। एकमात्र तरीका यह समझ में आता है कि यदि आप समझते हैं कि सूची आइटम तब तक प्रकट नहीं होते हैं जब तक कि नियंत्रण पर ध्यान केंद्रित न हो (या आप 'छुपा चयन' गुण को गलत पर सेट करते हैं)। और यदि आप उसे जानते थे, तो आपको इस सवाल को पहले स्थान पर नहीं पूछना पड़ेगा। सबसे महत्वपूर्ण बात यह है कि जब उपयोगकर्ता फॉर्म पर कहीं और क्लिक करता है तो यह टूट जाता है। अचानक चुने गए आइटम का चयन नहीं किया जा रहा है! पूछताछ करने वाला जो आपके जवाब से कोड कॉपी और पेस्ट करता है, उसे पता नहीं चलेगा कि क्या हुआ है, और वे एक और सवाल पूछेंगे। –

7

मुझे लगता है कि समस्या और समाधान cody ग्रे द्वारा descripted किया गया था! मेरे पास एक अतिरिक्त नोट है।

कृपया निर्दिष्ट सूचीदृश्य आइटम (और नियंत्रण!) का ध्यान देखें। मैं कोड की निम्न लाइनों के साथ ध्यान केंद्रित करने और चयन सेट कर सकते हैं:

this.listView1.Items[1].Selected = true; 
this.listView1.Items[1].Focused = true; 

लेकिन ध्यान केंद्रित नियंत्रण एक शर्त थी!

+1

किसी व्यक्तिगत सूचीदृश्य आइटम पर फ़ोकस सेट करना केवल तभी जरूरी है जब आपके पास * एकाधिक * आइटम चुने जाएं। उस स्थिति में, सभी चयनित वस्तुओं की पृष्ठभूमि को हाइलाइट किया जाएगा, लेकिन उनमें से केवल एक को "फोकस आयताकार" रखा जाएगा। आप यह निर्धारित कर सकते हैं कि ['फोकस्ड' प्रॉपर्टी] (http://msdn.microsoft.com/en-us/library/system.windows.forms.listviewitem.focused.aspx) को सेट करके कौन सा है, जैसा आपने किया है यहाँ। जब 'ListView' में केवल एक आइटम चुना जाता है, तो जब भी उसके होस्ट नियंत्रण पर ध्यान केंद्रित होता है तो यह हमेशा ध्यान केंद्रित करेगा। –

0
if (listView1.Items.Count > 0) 
{ 
    listView1.FocusedItem = listView1.Items[0]; 
    listView1.Items[0].Selected = true; 
    listView1.Select(); 
} 
2
स्पष्टीकरण के बिना
 int i=99;//is what row you want to select and focus 
     listViewRamos.FocusedItem = listViewRamos.Items[0]; 
     listViewRamos.Items[i].Selected = true; 
     listViewRamos.Select(); 
     listViewRamos.EnsureVisible(i);//This is the trick 
+0

सहमत हुए, 'सुनिश्चित करें() 'उतना ही महत्वपूर्ण है। –

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