2010-05-27 17 views
19

मैं सी # में Windows Forms एप्लिकेशन का निर्माण कर रहा हूं। जब टैब मेनू पर एक निश्चित टैब चुना जाता है तो मैं कोड कैसे ट्रिगर करूं?विंडोज फॉर्म इवेंट "टैब का चयन करें"?

+1

आपका मतलब टैब मेनू, टैबकंट्रोल द्वारा है, है ना? –

+0

'tabControl.TabPages [tabControl.SelectedIndex] 'आपको उस इंडेक्स पर' टैबपेज 'देता है। –

उत्तर

30

हैं मुझे लगता है कि यह TabControl.SelectedIndexChanged घटना है।

बस एमएसडीएन देखें। मैंने इसे वहां से लिया। मान लीजिए कि आपने अपना टैब कंट्रोल tabControl1 नाम दिया है। आप इस घटना का उपयोग कर की सदस्यता के लिए की जरूरत है:

tabContrl1.TabControl.SelectedIndexChanged += tabControl1_SelectedIndexChanged; 

और ईवेंट हैंडलर

private void tabControl1_SelectedIndexChanged(Object sender, EventArgs e) { 

    MessageBox.Show("You are in the TabControl.SelectedIndexChanged event."); 
} 
+0

क्या आप मुझे नमूना कार्यक्रम में इस्तेमाल होने वाले कोड की इस पंक्ति का एक उदाहरण दे सकते हैं? मुझे नहीं पता कि आपके द्वारा प्रदान किए गए कोड के साथ क्या करना है, धन्यवाद! – sooprise

1

यह जांचें कि क्या यह helps है। "SelectedIndexChanged" आपकी मदद कर सकता है।

विवरण MSDN से here

13

जोड़ने TabControl और उसके SelectedIndexChanged घटना आपको क्या चाहिए करेंगे।

उदाहरण के लिए, आपके पास फॉर्म के विवरण भाग में TabControl के साथ एक ग्राहक फ़ाइल है। जब आप लेनदेन TabPage पर क्लिक करते हैं तो आप इस ग्राहक के लेन-देन को आलसी लोड करना चाहते हैं। आपका कोड इस छद्म कोड की तरह दिखना चाहिए:

public partial class CustomerMgmtForm : Form { 
    // Assuming the design already done, so the TabControl control exists on your form. 
    public CustomerMgmtForm() { 
     tabControl1.SelectedIndexChanged += new EventHandler(tabControl1_SelectedIndexChanged); 
    } 

    private void tabControl1_SelectedIndexchanged(object sender, EventArgs e) { 
     switch((sender as TabControl).SelectedIndex) { 
      case 0: 
       // Do nothing here (let's suppose that TabPage index 0 is the address information which is already loaded. 
       break; 
      case 1: 
       // Let's suppose TabPage index 1 is the one for the transactions. 
       // Assuming you have put a DataGridView control so that the transactions can be listed. 
       // currentCustomer.Id can be obtained through the CurrencyManager of your BindingSource object used to data bind your data to your Windows form controls. 
       dataGridview1.DataSource = GetTransactions(currentCustomer.Id); 
       break; 
     } 
    } 
} 

निम्नलिखित TabControl के साथ खेलते हुए भी उपयोगी होते हैं।

  1. TabControl.TabPages.Add();
  2. TabControl.TabPages.Contains();
  3. TabControl.TabPages.ContainsKey();
  4. TabControl.TabPages.Insert();
  5. TabControl.TabPages.Remove();
  6. TabControl.TabPages.RemoveAt();
  7. TabControl.TabPages.RemoveByKey()।

TabControl.TabPageCollection Members का उपयोग करना।

संपादित करें # 1

एक विशिष्ट टैब का चयन के लिए, यह केवल 0, 1, 2, और नहीं टैब नाम से पहचाना जा सकता है?

हाँ, आप के रूप में अच्छी बढ़ा देते या घटती TabControl.SelectedIndex संपत्ति एक विशिष्ट TabPage चयनित/सक्रिय बनाने के लिए हो सकता है।

एक बात हालांकि, अन्यथा आप एक IndexOutOfRangeException फेंका मिल जाएगा, तो आप एक TabPageTabPages.Count - 1 से बाहर सूचकांक नहीं करते हैं, के बाद से शुरू सूचकांक 0 है सुनिश्चित करें।

// Will automatically change the selected tab to the Transactions TabPage. 
tabControl1.SelectedIndex = 1; 

// Considering there a count of two TabPages, the first is indexed at 0, and the second at 1. 
// Setting the SelectedIndex property to 2 will throw. 
tabControl1.SelectedIndex = 2; 

नोट::

हमारे उदाहरण है जहाँ हम दो पृष्ठों, पता जानकारी और लेन-देन के साथ जारी रखने के लिए TabControl.SelectedIndex संपत्ति का कोई भी परिवर्तन TabControl.SelectedIndexChanged घटना ट्रिगर किया जाएगा।

+0

एक विशिष्ट टैब का चयन करने के लिए, इसे केवल 0, 1, 2 द्वारा पहचाना जा सकता है, न कि टैब नाम? – sooprise

+0

कृपया इस टिप्पणी के जवाब के लिए मेरे संपादन को देखें। =) –

4

एक विशिष्ट टैब का चयन के लिए, यह केवल 0, 1, 2, और नहीं टैब नाम से पहचाना जा सकता है?

आप ईवेंट श्रोता को टैब नियंत्रण के बजाय वास्तविक टैब में जोड़कर ऐसा कर सकते हैं।

यदि आपके पास टैबहिस्ट्री नामक एक टैब था, तो आप डिज़ाइनर में निम्न पंक्ति जोड़ सकते हैं।

this.tabHistory.Enter += new System.EventHandler(this.tabHistory_Enter); 

फिर ईवेंट को पकड़ने के लिए बस अपनी विधि जोड़ें।

private void tabHistory_Enter(object sender, EventArgs e) 
{ 
    MessageBox.Show("Hey! Ive got focus"); 
} 
+0

यह केवल तभी काम करता है जब टैब फॉर्म में भी क्लिक किया जाता है। परिवर्तन के साथ 2 क्लिक हैं क्लिक करें! – Bytemain

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