2009-02-19 21 views
5

मैं किसी ईवेंट हैंडलर (जैसे बटन क्लिक ईवेंट) में उपयोगकर्ता नियंत्रण में नियंत्रण जोड़ना चाहता हूं।उपयोगकर्ता नियंत्रण में नियंत्रण जोड़ना गतिशील रूप से

मैं एक DataGridView देखने नियंत्रण गतिशील रूप से जोड़ने के लिए कोशिश कर रहा हूँ, लेकिन मुझे लगता है कि काम करने के लिए नहीं मिल सका, तो मैं बस इस कोड के साथ एक बटन जोड़ने की कोशिश की:

private void btnCreateNewButton_Click(object sender, EventArgs e) 
{ 
    Button btn = new Button(); 
    btn.Location = new Point(100, 640); 
    btn.Size = new Size(100, 30); 
    btn.Text = "Click Me"; 
    btn.Click += (s, ea) => MessageBox.Show("New button clicked"); 
    this.Controls.Add(btn); 
} 

जब मैं अपने नए बनाएँ क्लिक करें बटन, कोई बटन नहीं दिखता है।

यदि मैं उपयोगकर्ता नियंत्रण के बजाय एक ही कोड में एक ही कोड जोड़ता हूं, तो बटन बनाया गया है और इच्छित के रूप में प्रदर्शित होता है, लेकिन उपयोगकर्ता नियंत्रण में कुछ भी नहीं होता है। उपयोगकर्ता नियंत्रण मैंने भी

this.Parent.Controls.Add(btn) and 
this.ParentForm.Controls.Add(btn) 

लेकिन कोई फायदा नहीं हुआ।

किसी को भी कोई विचार मिला है?

धन्यवाद, सीरान।

+0

पहले संस्करण (this.Controls.Add) बस ठीक काम करता है ... UserControl से अधिक 640 –

उत्तर

1

आप अपना बटन 100,640 अंक पर रखें। कृपया सुनिश्चित करें कि आपका उपयोगकर्ता नियंत्रण आपके गतिशील बटन को समायोजित कर सकता है। अन्यथा, आप इसे नहीं देख पाएंगे। मैंने आपके कोड का उपयोग किया और यह मेरे लिए ठीक काम किया, बस माता-पिता के रूप और उपयोगकर्ता नियंत्रण दोनों के उचित आकार को सुनिश्चित करें।

+1

कि के लिए धन्यवाद, यह किसी कारण के लिए नियंत्रण के नीचे प्रदर्शित किया गया था है। मुझे BringToFront() को कॉल करने की आवश्यकता थी –

1

सबसे अधिक संभावना है कि आपका बटन मूल नियंत्रण की सीमाओं और/या किसी अन्य नियंत्रण के पीछे रखा जा रहा है। मुझे विश्वास नहीं है कि उपयोगकर्ता नियंत्रण या फॉर्म रन-टाइम पर नियंत्रण जोड़ने के संबंध में विशेष हैं, लेकिन एक साधारण अंतर यह हो सकता है कि फॉर्म डिफ़ॉल्ट रूप से पुन: प्रयोज्य होते हैं जबकि उपयोगकर्ता नियंत्रण नहीं होते हैं? किसी भी तरह से मुझे नहीं लगता कि या तो नियंत्रण प्रकार स्वचालित रूप से अपने सभी बाल नियंत्रणों को फिट करने के लिए आकार बदल देगा, इसलिए गलत जगह पर नया/गतिशील नियंत्रण डालना काफी आसान है और यह दिखाई नहीं दे रहा है।

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