2012-09-06 15 views
11

मैं हेड फर्स्ट सी # पुस्तक के माध्यम से काम कर रहा हूं और InitializeComponent() का उपयोग किया है; विधि कई बार।InitializeComponent() की बहुत सरल परिभाषा; विधि

इस का एक उदाहरण पार्टी प्लानर व्यायाम पर है मैं एक वर्ग कहा जाता DinnerParty.cs बनाया और फिर Form1.cs

public Form1()   
     {   
      InitializeComponent(); 
      dinnerParty = new DinnerParty() { NumberOfPeople = 5 }; 
      dinnerParty.SetHealthyOption(checkBox2.Checked); 
      dinnerParty.CalculateCostOfDecorations(checkBox1.Checked); 
      DisplayDinnerPartyCost(); 
     } 

में इस कोड का इस्तेमाल किया मेरा प्रश्न है, वास्तव में प्रारंभ घटक विधि है क्या करते हुए। मेरी समझ यह है कि मैं डिनरपार्टी क्लास की एक नई ऑब्जेक्ट या इंस्टेंस को परिभाषित कर रहा हूं और सभी मानों को स्थापित कर रहा हूं, अब तक मैंने माना है कि InitializeComponent() निम्न प्रकार का उपयोग करके "मेरे फ़ील्ड के मान सेट अप करें:"

क्या मैं एक बेसिक हो सकता हूं, कुछ मैं परिभाषा के चारों ओर अपना सिर प्राप्त कर सकता हूं। मैंने पिछले पोस्ट और इसके बारे में उत्तर देखे हैं और सबकुछ बहुत जटिल है। मैं जवाब को समझने के लिए सबसे आसान चिह्नित करूंगा कि अभी भी उत्तर के रूप में महत्वपूर्ण जानकारी है।

+3

यदि आपके पास 'Form1.Designer.cs' पर एक नज़र है तो इसमें विधि 'प्रारंभिक कॉम्पोनेंट' होगी। असल में यह सिर्फ फॉर्म की सामग्री शुरू करता है। – 3aw5TZetdf

+2

विजुअल स्टूडियो में 'प्रारंभिक कॉम्पोनेंट' पर राइट क्लिक करें और 'घोषणा पर जाएं' का चयन करें। ता दा – Adam

+0

देखें [प्रारंभिक कॉम्पोनेंट स्पष्टीकरण] (http: //www.dotnetperls।com/startizecomponent) – logicnp

उत्तर

24

InitializeComponent एक विधि स्वचालित रूप से फार्म डिजाइनर जब आप बनाने/अपने रूपों को बदलने से आप के लिए लिखा है।

हर फार्म फ़ाइल (जैसे Form1.cs) एक डिजाइनर फ़ाइल (Form1.designer.cs जैसे) है कि InitializeComponent विधि, सामान्य की ओवरराइड Form.Dispose शामिल है, और अपने उपयोगकर्ता के सभी की घोषणा की है इंटरफ़ेस ऑब्जेक्ट्स जैसे बटन, टेक्स्टबॉक्स, लेबल्स और फॉर्म स्वयं।

InitializeComponent विधि कोड है कि बनाता है और यूजर इंटरफेस वस्तुओं आप (प्रोग्रामर) द्वारा उपलब्ध कराए गए मूल्यों के साथ प्रपत्र सतह पर घसीटा फार्म डिजाइनर की संपत्ति ग्रिड का उपयोग कर initializes में शामिल है। इस तथ्य के कारण कभी भी InitializeComponent पर कॉल से पहले फ़ॉर्म या नियंत्रण से बातचीत करने का प्रयास न करें।
इसके अलावा, आप यहां पाएंगे, नियंत्रण कार्यों को जोड़ने और उपयोगकर्ता क्रियाओं के जवाब देने के लिए लिखे गए विशिष्ट ईवेंट हैंडलर को ईवेंट बनाने के लिए आवश्यक प्लंबिंग।

फॉर्म 1.cs और Form1.Designer.cs फ़ाइलों में निहित कोड partial classes की अवधारणा के लिए एक ही कक्षा का हिस्सा है जो आपके कोड की दो या दो से अधिक फ़ाइलों को कोड के एक ब्लॉक की तरह रख सकता है।

बेशक

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

+2

यह एक अच्छा जवाब है। –

2

प्रारंभिक कॉम्पोनेंट एक विधि है जिसका उपयोग आपके फॉर्म को आरंभ करने के लिए किया जाता है। इसका आपके डिनरपार्टी क्लास के साथ कुछ लेना देना नहीं है।

तो, यह आपके उपयोगकर्ता इंटरफ़ेस पर बटन, लेबल, ईवेंट हैंडलर जैसी चीजों को स्थापित कर सकता है।

यहां गहराई से स्पष्टीकरण में और अधिक है। What does InitializeComponent() do, and how does it work in WPF?

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