2012-02-21 13 views
5

पर गतिशील रूप से नियंत्रण की सरणी जोड़ना मेरे पास एक प्रश्न है, मैं गतिशील रूप से विंडोज़ फॉर्म में नियंत्रण की एक सरणी जोड़ना चाहता हूं, मैंने निम्नलिखित कोड तैयार किया है, लेकिन प्रश्न केवल फ़ॉर्म में पहला नियंत्रण दिखाता है शेष नियंत्रण संग्रह में मौजूद हैं लेकिन फॉर्म पर नहीं दिखाए गए हैं। कोड में क्या गुम है?Winform

कोड:

LinkLabel[] arrLbl = new LinkLabel[5]; 

for (int i = 0; i < 5; i++) 
{ 
    LinkLabel lbl = new LinkLabel(); 
    lbl.Text = "Label: " + i.ToString(); 
    arrLbl[i] = lbl; 
} 

foreach (Control c in arrLbl) 
    this.Controls.Add(c); 

उत्तर

15

आपका कोड सही है। समस्या सबसे अधिक संभावना है कि आपके द्वारा जोड़े जा रहे सभी नियंत्रण सिर्फ एक दूसरे के शीर्ष पर खड़े हो रहे हैं, जिससे आप केवल शीर्ष पर देख सकते हैं।

मुझे नहीं पता कि आप किस प्रकार के कंटेनर नियंत्रण को जोड़ रहे हैं, लेकिन उन्हें FlowLayoutPanel में जोड़ने पर विचार करें, जो स्वचालित रूप से अपने बाल नियंत्रण की व्यवस्था को संभालेगा।

आप चुन सकते हैं कि क्या आप FlowDirection property सेट करके बच्चे को लंबवत या क्षैतिज रूप से "प्रवाह" करने के लिए नियंत्रित करना चाहते हैं।

यदि आप FlowLayoutPanel (या अन्य बुद्धिमान कंटेनर नियंत्रण) का उपयोग नहीं करना चाहते हैं, तो आपको अपने प्रत्येक बच्चे के नियंत्रण में Location property मैन्युअल रूप से सेट करना होगा।

1

आपको प्रत्येक नियंत्रण की स्थान संपत्ति सेट करनी चाहिए। वे सभी एक-दूसरे पर प्रस्तुत किए जा रहे हैं।

+0

क्या मुझे ऐसा कुछ करना चाहिए: एलबीएल [इंडेक्स]। स्थान = नया प्वाइंट (एक्स, वाई)। पहले कोशिश की है लेकिन मेरे लिए काम नहीं किया! कारण क्या होगा? –

+0

और एक्स और वाई क्या थे? – Beatles1692

+0

एक्स स्थैतिक था और वाई इस तरह लूप के माध्यम से संक्रमित किया गया था: lbl.Location = नया प्वाइंट (0, काउंटर +10); –