2013-02-22 16 views
5

मेरे पास एक कॉम्बो बॉक्स है जिसे मुझे सी # Winforms आधारित एप्लिकेशन में किसी अन्य टैब पेज में दर्पण करने की आवश्यकता है।एक अलग टैब में एक combobox के पाठ को बदलना

जब आप ड्रॉप डाउन सूची से एक अलग आइटम चुनते हैं तो मेरे पास पूरी तरह से कोड काम कर रहा है। दुर्भाग्यवश, हालांकि, जब मैं एक टैब के Text को बदलता हूं जिसे अभी तक क्लिक नहीं किया गया है, वास्तव में कुछ भी नहीं होता है।

यदि मैं पहले प्रत्येक टैब पर क्लिक करता हूं तो सब कुछ अपेक्षित काम करता है।

अब मैं इसे शुरुआतीकरण की कमी के कुछ रूप में पहले डाल रहा हूं। इसलिए मैंने अपने कन्स्ट्रक्टर में प्रत्येक टैब का चयन करने का प्रयास किया है।

tabControlDataSource.SelectedIndex = 0; 
tabControlDataSource.SelectedIndex = 1; 
// etc 

लेकिन यह काम नहीं करता है।

मैंने tabControlDataSource.SelectTab(1) पर कॉल करने का भी प्रयास किया है और फिर भी यह काम नहीं करता है।

क्या कोई जानता है कि मैं टैब को "प्रारंभ" करने के लिए कैसे मजबूर कर सकता हूं?

+0

मैं नहीं हो सकता एक बार एक ही समस्या थी जिसे मैंने 'tabControl.SelectedTab = tabControl.TabPages [" tabName "]' हल करने का हल किया था। मैं नहीं देखता कि यह 'tabControlDataSource.SelectTab (1)' से अलग कैसे है। – Otiel

उत्तर

3

ठीक है, आमतौर पर मैं एक घंटे के लिए संघर्ष करने के बाद प्रश्न पोस्ट करता हूं और जल्द ही समाधान ढूंढता हूं।

टैबपेज आलसी शुरुआत में हैं। इसलिए जब तक वे पहली बार दिखाई नहीं देते हैं तब तक वे पूरी तरह से प्रारंभ नहीं करते हैं।

तो मैं अपने निर्माता के लिए इस कोड कहा:

 tabControlDataSource.TabPages[0].Show(); 
     tabControlDataSource.TabPages[1].Show(); 
     tabControlDataSource.TabPages[2].Show(); 

लेकिन यह काम नहीं किया :(

हालांकि घटित हुआ, कि निर्माता सबसे अच्छी जगह नहीं हो सकता है तो। इस प्रकार मैं Shown के लिए एक ईवेंट हैंडलर बनाया:

private void MainForm_Shown(object sender, EventArgs e) 
    { 
     tabControlDataSource.TabPages[0].Show(); 
     tabControlDataSource.TabPages[1].Show(); 
     tabControlDataSource.TabPages[2].Show(); 
    } 

और अब सब कुछ काम कर रहा है

2

शायद आप इस मामले में "आलसी" सिंक्रनाइज़ेशन (प्रारंभिकरण) के प्रकार का भी उपयोग कर सकते हैं। त्वरित मजबूत विचार: सामग्री अपडेट करने के लिए मतदान टाइमर (जो टैब पेज देखने के बाद इसे अपडेट करेगा), कोई दूसरा टैब के भीतर निर्भर नहीं है (दूसरे टैब सामग्री को अपडेट करने के लिए combobox के लिए कोई भी बदली गई घटना नहीं, पहले टैब से मूल combobox का उपयोग करें या इसके बजाय अंतर्निहित सामग्री है दोनों comboboxes वर्ग, आदि), "आवश्कता है" जब टैब दिखाई देने लगते हैं (जो इस समय आप भी अपने दूसरे बता गया init) के लिए सुलभ ... में

एक घंटे, कोई रास्ता नहीं है = डी

+1

हाँ यह एक घंटा था, मैं अब तक पुराने पुराने Win32 के लिए उपयोग किया जाता हूं जहां मेरे पास कुछ भी मुझसे दूर नहीं है;) – Goz

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