2009-10-07 14 views
18

यहाँ मेरी कोड है:दृश्य स्टूडियो TabControl.TabPages.Insert काम नहीं कर रहा

public MainForm() 
    { 
     InitializeComponent(); 

     MyServiceSettings obj = (MyServiceSettings)ConfigurationManager.GetSection("MyServiceSettings"); 

     foreach (MyServiceConfigElement service in obj.Services) 
      CreateServiceControl(service); 
    } 

    private void CreateServiceControl(MyServiceConfigElement service) 
    { 
     TabPage tp = new TabPage(service.Name); 
     tabControl1.TabPages.Insert(0, tp); 
     //tabControl1.TabPages.Add(tp); 
     tabControl1.Refresh();  
    } 

संक्षेप में, यह एक कॉन्फ़िग फ़ाइल में एक वर्ग को पढ़ता है और खंड में प्रत्येक तत्व के लिए एक टैब पैदा करता है।

मैं पहले से ही एक स्थिर डिजाइन समय बनाया TabPage है। मैं इस स्थैतिक टैब से पहले गतिशील बनाए गए टैब को सम्मिलित करना चाहता हूं।

इस कोड चल रहा है, TabControl केवल स्थिर tabpage को दर्शाता है।

अगर मैं इस परिवर्तन कार्य करें:

 private void CreateServiceControl(SoftInfoServiceConfigElement service) 
    { 
     TabPage tp = new TabPage(service.Name); 
     //tabControl1.TabPages.Insert(1, tp); 
     tabControl1.TabPages.Add(tp); 
     tabControl1.Refresh(); 
    } 

विधि जोड़ें का उपयोग सभी पृष्ठों को दर्शाता है। लेकिन मुझे वह आदेश नहीं मिला जो मैं चाहता हूं।

वहाँ कुछ मैं सम्मिलित विधि के साथ समझ में नहीं आता है? यह क्यों काम कर रहा है?

उत्तर

37

social.msdn पर एक टिप्पणी है - हालांकि मैं दस्तावेज में इस तरह कुछ भी नहीं मिला:

TabControl के हैंडल काम करने के लिए

उल्लेख प्रयास करें सम्मिलित विधि के लिए बनाया जाना चाहिए कोड

IntPtr h = this.tabControl1.Handle; 

इससे पहले कि आप अपनी सेवाओं

से अधिक पाश
+1

धन्यवाद। इस समस्या को हल करने से समस्या हल हो गई। – vIceBerg

+2

मैं इस तरह के बेवकूफ नहीं हो सकता है ... वैसे भी यह काम कर रहा है! – Zyo

+0

बहुत बढ़िया जवाब। इतना आसान लेकिन अभी तक अज्ञात है। +1 – mihirj

1

आप Insert() विधि के लिए एक ही सूचकांक गुजर रहे हैं। यदि आप बस वृद्धि करना चाहते हैं, तो यह काम करना चाहिए:

// ... 

int i = 0; 
foreach (MyServiceConfigElement service in obj.Services) 
      CreateServiceControl(service, i++); 

// ... 

private void CreateServiceControl(MyServiceConfigElement service, int i) 
{ 
     TabPage tp = new TabPage(service.Name); 
       tabControl1.TabPages.Insert(i, tp); 
// ... 

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