प्रोग्रामिंग सी # में उन्नत Winforms

इस C # प्रोग्रामिंग ट्यूटोरियल में, मैं ComboBoxes, Grids, और ListViews जैसे उन्नत नियंत्रणों पर ध्यान केंद्रित करूँगा और आपको वह तरीका दिखाऊँगा जिसका आप सबसे अधिक उपयोग करेंगे। मैं बाद के ट्यूटोरियल तक डेटा और बाइंडिंग को नहीं छू रहा हूं। चलो एक साधारण नियंत्रण के साथ शुरू करते हैं, एक कॉम्बो बॉक्स।

कॉम्बो के दिल में एक आइटम संग्रह है और इसे आबाद करने का सबसे सरल तरीका स्क्रीन पर एक कॉम्बो ड्रॉप है, गुणों का चयन करें (यदि आप गुण विंडो नहीं देख सकते हैं, तो शीर्ष मेनू और फिर गुण विंडो पर देखें पर क्लिक करें), आइटम खोजें और दीर्घवृत्त पर क्लिक करें बटन। फिर आप स्ट्रिंग्स में टाइप कर सकते हैं, प्रोग्राम संकलित कर सकते हैं और कॉम्बो को नीचे खींच कर विकल्प देख सकते हैं।

अब कार्यक्रम बंद करो और कुछ और संख्याएँ जोड़ें: चार, पाँच ।। दस तक। जब आप इसे चलाते हैं तो आप केवल 8 देखेंगे क्योंकि यह MaxDropDownItems का डिफ़ॉल्ट मान है। बेझिझक इसे 20 या 3 पर सेट करें और फिर इसे देखें कि यह क्या करता है।

यह कष्टप्रद है कि जब यह खुलता है तो इसे comboBox1 कहते हैं और आप इसे संपादित कर सकते हैं। यही हम नहीं चाहते। DropDownStyle गुण ढूंढें और DropDown को DropDownList में बदलें। (यह एक कॉम्बो है!)। अब कोई पाठ नहीं है और यह संपादन योग्य नहीं है। आप संख्याओं में से किसी एक का चयन कर सकते हैं लेकिन यह हमेशा रिक्त रहता है। हम शुरुआत करने के लिए किसी संख्या का चयन कैसे करते हैं? वैसे यह एक ऐसी संपत्ति नहीं है जिसे आप डिज़ाइन समय पर सेट कर सकते हैं, लेकिन इस लाइन को जोड़ने से ऐसा होगा।

instagram viewer

उस लाइन को फॉर्म 1 () कंस्ट्रक्टर में जोड़ें। आपको फॉर्म के लिए कोड देखना होगा (समाधान एक्सप्लोरर में, From1.cs पर राइट क्लिक करें और कोड देखें पर क्लिक करें। आरंभिक खोजें खोजें (); और इसके तुरंत बाद उस लाइन को जोड़ दें।

यदि आप कॉम्बो के लिए ड्रॉपडाउन स्टाइल प्रॉपर्टी को सरल पर सेट करते हैं और प्रोग्राम चलाते हैं तो आपको कुछ नहीं मिलेगा। यह चयन या क्लिक या प्रतिक्रिया नहीं करेगा। क्यों? क्योंकि डिजाइन के समय आपको निचले खिंचाव के हैंडल को पकड़ना चाहिए और पूरे नियंत्रण को लंबा करना चाहिए।

उदाहरण 2 में, मैंने कॉम्बो बॉक्स का नाम बदलकर कॉम्बो कर दिया है, कॉम्बो ड्रॉपडाउन स्टाइल को वापस ड्रॉपडाउन में बदल दिया है ताकि इसे एडिट किया जा सके और btnAdd नामक ऐड बटन को जोड़ा जा सके। मैंने एक ईवेंट btnAdd_Click () ईवेंट हैंडलर बनाने के लिए ऐड बटन पर डबल क्लिक किया है और इस ईवेंट लाइन को जोड़ा है।

अब जब आप प्रोग्राम चलाते हैं, तो एक नई संख्या में टाइप करें, इलेवन कहें और ऐड पर क्लिक करें। ईवेंट हैंडलर आपके द्वारा लिखे गए पाठ को कॉम्बो में लेता है। पाठ) और इसे कॉम्बो के आइटम संग्रह में जोड़ता है। कॉम्बो पर क्लिक करें और हमारे पास अब एक नई प्रविष्टि ग्यारह है। कि कैसे आप एक कॉम्बो में एक नया तार जोड़ते हैं। एक को हटाने के लिए थोड़ा और अधिक जटिल है क्योंकि आपको उस स्ट्रिंग का सूचकांक ढूंढना होगा जिसे आप निकालना चाहते हैं फिर हटा दें। नीचे दिखाया गया तरीका RemoveAt ऐसा करने के लिए एक संग्रह विधि है। आपको सिर्फ रिमाइंडेक्स पैरामीटर में कौन सा आइटम निर्दिष्ट करना है।

स्ट्रिंग को हटा देगा स्थिति RemoveIndex पर। यदि कॉम्बो में n आइटम हैं तो मान्य मान 0 से n-1 हैं। 10 वस्तुओं के लिए, मान 0..9।

यदि यह पाठ नहीं खोजता है तो यह -1 देता है अन्यथा यह कॉम्बो सूची में स्ट्रिंग के 0 आधारित सूचकांक को लौटाता है। FindStringExact का एक अतिभारित तरीका भी है जो आपको यह निर्दिष्ट करने की अनुमति देता है कि आप खोज कहाँ से शुरू करते हैं, इसलिए यदि आप डुप्लिकेट हैं, तो आप पहले एक को छोड़ सकते हैं। यह एक सूची में डुप्लिकेट को हटाने के लिए आसान हो सकता है।

BtnAddMany_Click पर क्लिक करने से कॉम्बो से टेक्स्ट क्लियर हो जाता है और फिर कॉम्बो आइटम कलेक्शन की सामग्री को क्लियर करता है। AddRange (मान मान से स्ट्रिंग्स को जोड़ने के लिए)। ऐसा करने के बाद, यह कॉम्बो के सेलेक्टइंडेक्स को 0 पर सेट करता है। यह कॉम्बो में पहला तत्व दिखाता है। यदि आप कॉम्बो बॉक्स में आइटमों को जोड़ने या हटाने का काम कर रहे हैं, तो यह सबसे अच्छा है कि किस आइटम का चयन किया जाए। सेलेक्टइंडेक्स को -1 पर सेट करना चयनित आइटम को छुपाता है।

Add Lots बटन सूची को साफ करता है और 10,000 नंबर जोड़ता है। मैंने कॉम्बो जोड़ा है। StartUpdate () और कॉम्बो, EndUpdate () नियंत्रण को अपडेट करने की कोशिश कर रहे विंडोज से किसी भी झिलमिलाहट को रोकने के लिए लूप के चारों ओर कॉल करता है। मेरे तीन साल पुराने पीसी पर कॉम्बो में 100,000 नंबर जोड़ने के लिए बस एक सेकंड का समय लगता है।

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

प्रपत्र पर एक सूची दृश्य छोड़ने के बाद, कॉलम गुण पर क्लिक करें और 4 कॉलम जोड़ें। ये टाउननेम, एक्स, वाई और पॉप होंगे। प्रत्येक ColumnHeader के लिए पाठ सेट करें। यदि आप सूची दृश्य (आप सभी 4 जोड़े जाने के बाद) पर शीर्षकों को नहीं देख सकते हैं, तो सूची के दृश्य गुण विवरण पर सेट करें। यदि आप इस उदाहरण के लिए कोड देखते हैं तो नीचे ब्राउज़ करें जहां यह विंडोज फॉर्म डिजाइनर कोड कहता है और उस क्षेत्र का विस्तार करें जहां आप उस कोड को देखते हैं जो सूची दृश्य बनाता है। यह देखना उपयोगी है कि सिस्टम कैसे काम करता है और आप इस कोड को कॉपी कर सकते हैं और इसका उपयोग खुद कर सकते हैं।

आप प्रत्येक कॉलम के लिए हेडर पर कर्सर ले जाकर और उसे ड्रैग करके चौड़ाई सेट कर सकते हैं। या आप इसे डिज़ाइनर क्षेत्र का विस्तार करने के बाद दिखाई देने वाले कोड में कर सकते हैं। आपको इस तरह कोड देखना चाहिए:

जनसंख्या कॉलम के लिए, कोड में परिवर्तन डिजाइनर में दिखाई देता है और इसके विपरीत। ध्यान दें कि भले ही आप लॉक की गई संपत्ति को सही पर सेट करें, यह केवल डिजाइनर को प्रभावित करता है और रन-टाइम पर आप कॉलम का आकार बदल सकते हैं।

ListViews भी कई गतिशील गुणों के साथ आते हैं। (डायनेमिक गुण) पर क्लिक करें और अपनी इच्छित संपत्ति पर टिक करें। जब आप किसी गुण को गतिशील होने के लिए सेट करते हैं, तो यह XML .config फ़ाइल बनाता है और इसे सॉल्यूशन एक्सप्लोरर में जोड़ता है।

डिजाइन के समय में बदलाव करना एक बात है लेकिन कार्यक्रम चलने पर हमें वास्तव में इसे करने की आवश्यकता है। एक सूची दृश्य 0 या अधिक आइटम से बना है। प्रत्येक आइटम (एक सूची दृश्य) में एक पाठ संपत्ति और एक उप-संग्रह संग्रह है। पहला कॉलम आइटम टेक्स्ट को प्रदर्शित करता है, अगला कॉलम SubItem [0] को प्रदर्शित करता है। उसके बाद SubItem [1] को .xt और इतने पर।

मैंने टाउन नाम के लिए एक पंक्ति और एक संपादन बॉक्स जोड़ने के लिए एक बटन जोड़ा है। बॉक्स में कोई भी नाम दर्ज करें और Add Row पर क्लिक करें। यह पहले कॉलम और अगले तीन कॉलम में डाले गए शहर के नाम के साथ ListView में एक नई पंक्ति जोड़ता है (उप-विषयक [0..2]) उन तारों को जोड़कर यादृच्छिक संख्याओं (तारों में परिवर्तित) के साथ आबाद हैं उन्हें।

अब ListView गुणन गुण को असत्य पर सेट करें। हम केवल एक समय में एक आइटम का चयन करना चाहते हैं, हालांकि यदि आप एक बार में अधिक निकालना चाहते हैं तो यह समान है, सिवाय इसके कि आपको रिवर्स में लूप करना पड़े। (यदि आप सामान्य क्रम में लूप करते हैं और आइटम हटाते हैं, तो बाद के आइटम चयनित अनुक्रमित के साथ सिंक से बाहर हैं)।

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

यदि आप हटाए गए आइटम की दृष्टि खो देते हैं, तो बस फॉर्म डिजाइनर के रूप में पॉपअपमेनु नियंत्रण को स्वयं क्लिक करें। जो इसे देखने में वापस लाएगा।

हालाँकि यदि आप इसे चलाते हैं और कोई आइटम नहीं जोड़ते हैं और इसे चुनते हैं, तो जब आप राइट क्लिक करते हैं और मेनू प्राप्त करते हैं और निकालें आइटम पर क्लिक करते हैं, तो यह एक अपवाद देगा क्योंकि कोई चयनित आइटम नहीं है। यह खराब प्रोग्रामिंग है, इसलिए यहां बताया गया है कि आप इसे कैसे ठीक करते हैं। पॉप-अप ईवेंट पर डबल क्लिक करें और कोड की इस पंक्ति को जोड़ें।

एक DataGridView C # के साथ मुफ्त में प्रदान किया गया सबसे जटिल और सबसे उपयोगी घटक दोनों है। यह दोनों डेटा स्रोतों के साथ काम करता है (यानी एक डेटाबेस से डेटा) और बिना (यानी डेटा जिसे आप प्रोग्रामेटिक रूप से जोड़ते हैं)। इस ट्यूटोरियल के बाकी हिस्सों के लिए मैं डेटा स्रोतों के बिना इसका उपयोग करके दिखाऊंगा, सरल प्रदर्शन आवश्यकताओं के लिए आपको एक सादा सूची दृश्य अधिक उपयुक्त मिल सकता है।

यदि आपने पुराने DataGrid नियंत्रण का उपयोग किया है, तो यह स्टेरॉयड पर उन लोगों में से एक है: यह आपको कॉलम प्रकारों में, आपके साथ कर सकते हैं आंतरिक के साथ-साथ बाहरी डेटा, प्रदर्शन (और घटनाओं) का अधिक अनुकूलन और ठंड पंक्तियों के साथ सेल हैंडलिंग पर अधिक नियंत्रण देता है और कॉलम।

जब आप ग्रिड डेटा के साथ फ़ॉर्म डिज़ाइन कर रहे हैं, तो विभिन्न कॉलम प्रकार निर्दिष्ट करना सबसे सामान्य है। आपके पास एक कॉलम में चेकबॉक्स हो सकते हैं, दूसरे में और पाठ्यक्रम संख्याओं में आसानी से संपादन योग्य पाठ। इन स्तंभ प्रकारों को भी आम तौर पर संख्याओं के साथ अलग-अलग संरेखित किया जाता है, आम तौर पर सही संरेखित किया जाता है ताकि दशमलव अंक रेखा ऊपर हो। कॉलम स्तर पर आप बटन, चेकबॉक्स, कॉम्बो बॉक्स, छवि, टेक्स्टबॉक्स और लिंक में से चुन सकते हैं। यदि वे पर्याप्त नहीं हैं तो आप अपने स्वयं के कस्टम प्रकारों को परिभाषित कर सकते हैं।

कॉलम जोड़ने का सबसे आसान तरीका IDE में डिज़ाइन करना है। जैसा कि हमने पहले देखा है कि यह आपके लिए कोड लिखता है और जब आप इसे कुछ बार कर चुके होते हैं तो आप स्वयं कोड जोड़ना पसंद कर सकते हैं। एक बार जब आप ऐसा कर लेते हैं, तो यह आपको कार्यक्रम प्रदान करने के लिए अंतर्दृष्टि प्रदान करता है।

आइए कुछ कॉलम जोड़कर शुरू करें, फॉर्म पर एक DataGridView ड्रॉप करें और ऊपरी दाएं कोने में स्थित छोटे तीर पर क्लिक करें। फिर Add Column पर क्लिक करें। ऐसा तीन बार करें। यह एक कॉलम जोड़ें संवाद को पॉप करेगा जहां आप कॉलम का नाम, कॉलम शीर्ष पर प्रदर्शित करने के लिए पाठ सेट करते हैं और आपको उसका प्रकार चुनने की सुविधा देता है। पहला कॉलम YourName है और यह डिफ़ॉल्ट TextBox (dataGridViewTextBoxColumn) है। अपने नाम के साथ ही हैडर टेक्स्ट भी सेट करें। दूसरा कॉलम आयु बनाएं और कॉम्बोबॉक्स का उपयोग करें। तीसरा कॉलम अनुमति है और एक चेकबॉक्स कॉलम है।

तीनों को जोड़ने के बाद, आपको मध्य में एक कॉम्बो (आयु) के साथ तीन कॉलम की एक पंक्ति और अनुमत कॉलम में एक चेकबॉक्स देखना चाहिए। यदि आप DataGridView पर क्लिक करते हैं तो गुण निरीक्षक में आपको कॉलम का पता लगाना चाहिए और (संग्रह) पर क्लिक करना चाहिए। यह एक संवाद को पॉप अप करता है जहां आप प्रत्येक कॉलम के लिए गुण सेट कर सकते हैं जैसे व्यक्तिगत सेल रंग, टूलटिप पाठ, चौड़ाई, न्यूनतम चौड़ाई आदि। यदि आप संकलित करते हैं और चलाते हैं तो आप देखेंगे कि आप कॉलम की चौड़ाई और रन-टाइम बदल सकते हैं। मुख्य DataGridView के लिए प्रॉपर्टी इंस्पेक्टर में आप AllowUser को सेट कर सकते हैं ताकि इसे रोकने के लिए झूठी के आकार बदल सकें।

हम कोड में DataGridView नियंत्रण में पंक्तियाँ जोड़ने जा रहे हैं और उदाहरण फ़ाइल में ex3.cs में यह कोड है। एक TextEdit बॉक्स, एक कॉम्बो बॉक्स और उस पर DataGridView के साथ फार्म का एक बटन जोड़कर शुरू करें। DataGridView गुण AllowUserto AddRows को गलत पर सेट करें। मैं लेबल का भी उपयोग करता हूं और कॉम्बोक्स cbAges, बटन btnAddRow और TextBox tNName कहा जाता है। मैंने फॉर्म के लिए एक क्लोज बटन भी जोड़ा है और btnClose_Click इवेंट हैंडलर कंकाल उत्पन्न करने के लिए इसे डबल क्लिक किया है। शब्द क्लोज () जोड़ने से वह काम हो जाता है।

डिफ़ॉल्ट रूप से जोड़ें पंक्ति बटन सक्षम संपत्ति शुरू होने पर गलत है। जब तक Name TextEdit बॉक्स और ComboBox दोनों में पाठ नहीं है तब तक हम DataGridView में किसी भी पंक्तियों को जोड़ना नहीं चाहते हैं। मैंने विधि CheckAddButton का निर्माण किया और फिर घटनाओं को छोड़ते समय गुण में अवकाश शब्द के बगल में डबल क्लिक करके नाम पाठ संपादित करें बॉक्स के लिए एक लीव इवेंट हैंडलर उत्पन्न किया। गुण बॉक्स ऊपर चित्र में यह दिखाता है। डिफ़ॉल्ट रूप से गुण बॉक्स गुण दिखाता है लेकिन आप बिजली के बटन पर क्लिक करके ईवेंट हैंडलर देख सकते हैं।

आप इसके बजाय TextChanged घटना का उपयोग कर सकते थे, हालांकि यह CheckAddButton () जब प्रत्येक नियंत्रण के बजाय प्रत्येक कुंजी के लिए विधि का उपयोग किया जाता है यानी जब एक और नियंत्रण प्राप्त होता है ध्यान देते हैं। युग कॉम्बो पर मैंने TextChanged इवेंट का उपयोग किया, लेकिन एक नया ईवेंट हैंडलर बनाने के लिए tbName_Leave ईवेंट हैंडलर को डबलक्लब करने के बजाय चुना।

सभी ईवेंट्स संगत नहीं हैं क्योंकि कुछ ईवेंट अतिरिक्त पैरामीटर प्रदान करते हैं लेकिन यदि आप पहले से तैयार हैंडलर देख सकते हैं तो हाँ आप इसका उपयोग कर सकते हैं। यह ज्यादातर प्राथमिकता का विषय है, आपके पास प्रत्येक नियंत्रण के लिए एक अलग ईवेंट हैंडलर हो सकता है ईवेंट हैंडलर का उपयोग करना या साझा करना (जैसा मैंने किया) जब उनके पास एक सामान्य ईवेंट हस्ताक्षर होता है, अर्थात् पैरामीटर होते हैं वही।

मैंने संक्षिप्त नाम के लिए dGView के लिए DataGridView घटक का नाम बदला और एक घटना हैंडलर कंकाल उत्पन्न करने के लिए AddRow पर डबल क्लिक किया। नीचे दिया गया यह कोड एक नई रिक्त पंक्ति जोड़ता है, जो पंक्तियों का सूचकांक प्राप्त करता है (यह RowCount-1 है क्योंकि यह अभी जोड़ा गया है और RowCount 0 है आधारित) और फिर उस पंक्ति को उसके सूचकांक के माध्यम से एक्सेस करता है और उस स्तंभ पर कोशिकाओं में मानों को सेट करता है YourName और कॉलम के लिए उस पंक्ति पर उम्र।

फॉर्म डिजाइन करते समय, आपको कंटेनरों और नियंत्रणों के संदर्भ में सोचना चाहिए और नियंत्रणों के कौन से समूहों को एक साथ रखा जाना चाहिए। पश्चिमी संस्कृतियों में वैसे भी लोग टॉप लेफ्ट से लेकर राइट राइट तक पढ़ते हैं इसलिए इस तरह से पढ़ना आसान हो जाता है।

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

एक पैनल एक ग्रुपबॉक्स के समान है लेकिन एक ग्रुपबॉक्स स्क्रॉल नहीं कर सकता है लेकिन कैप्शन प्रदर्शित कर सकता है और डिफ़ॉल्ट रूप से एक सीमा है। पैनलों की सीमाएँ हो सकती हैं लेकिन डिफ़ॉल्ट रूप से नहीं। मैं ग्रुपबॉक्स का उपयोग करता हूं क्योंकि वे अच्छे दिखते हैं और यह महत्वपूर्ण है क्योंकि:

पैनल कंटेनरों के लिए भी काम कर रहे हैं, इसलिए आपके पास एक पैनल पर दो या अधिक ग्रुपबॉक्स हो सकते हैं।

यहां एक तरीका है कंटेनरों के साथ काम करने के लिए। एक फ़ॉर्म पर एक स्प्लिट कंटेनर ड्रॉप करें। बाएं पैनल पर फिर दाईं ओर क्लिक करें। अब कोशिश करें और स्प्लिटकोनटेनर को फॉर्म से हटा दें। यह तब तक मुश्किल है जब तक कि आप किसी एक पैनल पर राइट क्लिक नहीं करते हैं और फिर स्प्लिटकॉनटेनर 1 चुनें पर क्लिक करें। एक बार यह सब चुने जाने के बाद आप इसे हटा सकते हैं। एक और तरीका जो सभी नियंत्रणों और कंटेनरों पर लागू होता है Esc कुंजी मारा माता पिता का चयन करने के लिए।

कंटेनर एक दूसरे के अंदर भी घोंसला बना सकते हैं। बस एक छोटे से एक को एक बड़े के ऊपर खींचें और आप देखेंगे कि एक पतली ऊर्ध्वाधर रेखा संक्षेप में दिखाई देती है कि एक अब दूसरे के अंदर है। जब आप अभिभावक कंटेनर को खींचते हैं, तो बच्चे को उसके साथ ले जाया जाता है। उदाहरण 5 यह दिखाता है। डिफ़ॉल्ट रूप से लाइट ब्राउन पैनल कंटेनर के अंदर नहीं होता है इसलिए जब आप मूव बटन पर क्लिक करते हैं तो GroupBox ले जाया जाता है लेकिन पैनल नहीं होता है। अब GroupBox के ऊपर पैनल खींचें ताकि यह पूरी तरह से Groupbox के अंदर हो। जब आप इस समय को संकलित करते हैं और चलाते हैं, तो चाल बटन पर क्लिक करने से दोनों एक साथ चलते हैं।

एक TableLayoutpanel एक दिलचस्प कंटेनर है। यह एक तालिका संरचना है जो कोशिकाओं के 2 डी ग्रिड की तरह व्यवस्थित होती है जहां प्रत्येक कोशिका में सिर्फ एक नियंत्रण होता है। आपके पास सेल में एक से अधिक नियंत्रण नहीं हो सकते। आप यह निर्दिष्ट कर सकते हैं कि अधिक नियंत्रण जोड़े जाने पर या बढ़ने पर भी तालिका कैसे बढ़ती है, ऐसा लगता है कि HTML तालिका में मॉडल किया गया है क्योंकि कोशिकाएं स्तंभ या पंक्तियों को फैला सकती हैं। यहां तक ​​कि कंटेनर में बाल नियंत्रण का एंकरिंग व्यवहार मार्जिन और पैडिंग सेटिंग्स पर निर्भर करता है। हम अगले पृष्ठ पर एंकर के बारे में अधिक देखेंगे।

उदाहरण में Ex6.cs, मैंने एक बुनियादी दो कॉलम तालिका के साथ शुरू किया है और नियंत्रण और पंक्ति शैलियाँ संवाद बॉक्स के माध्यम से निर्दिष्ट किया गया है (नियंत्रण का चयन करें और थोड़ा क्लिक करें राइट पॉइंटिंग त्रिकोण, शीर्ष राइट के पास स्थित कार्यों की एक सूची देखने के लिए और अंतिम क्लिक करें) कि बाएं कॉलम 40% और दाएं कॉलम 60% है चौड़ाई। यह आपको संपूर्ण पिक्सेल शब्दों में कॉलम की चौड़ाई निर्दिष्ट करता है, प्रतिशत में या आप इसे केवल ऑटोसाइज़ कर सकते हैं। इस संवाद को प्राप्त करने का एक तेज़ तरीका गुण विंडो में कॉलम के बगल में स्थित संग्रह पर क्लिक करें।

मैंने एक AddRow बटन जोड़ा है और इसके डिफ़ॉल्ट AddRows मान के साथ GrowStyle गुण छोड़ दिया है। जब तालिका पूर्ण हो जाती है तो यह दूसरी पंक्ति जोड़ता है। वैकल्पिक रूप से आप इसके मूल्यों को AddColumns और FixedSize में सेट कर सकते हैं ताकि यह अब और न बढ़ सके। Ex6 में, जब आप Add Controls बटन पर क्लिक करते हैं, तो वह AddLabel () विधि को तीन बार और AddCheckBox () को एक बार कॉल करता है। प्रत्येक विधि नियंत्रण का एक उदाहरण बनाता है और फिर tblPanel कहता है। नियंत्रण। 2 नियंत्रण जोड़ने के बाद तीसरा नियंत्रण जोड़े जाने के कारण तालिका बढ़ती है। चित्र के बाद यह दिखाता है कि Add Add बटन को एक बार क्लिक किया गया है।

यदि आप सोच रहे हैं कि AddCheckbox () और AddLabel () के तरीकों में डिफ़ॉल्ट मान कहाँ से आते हैं, तो नियंत्रण था मूल रूप से डिजाइनर में तालिका में मैन्युअल रूप से जोड़ा गया और फिर इसे बनाने और इसे आरंभ करने के लिए कोड को इस के भीतर से कॉपी किया गया क्षेत्र। एक बार जब आप नीचे दिए गए क्षेत्र के बाईं ओर + क्लिक करते हैं, तो आपको initializeComponent पद्धति कॉल में इनिशियलाइज़ेशन कोड मिल जाएगा:

जब आप दूसरे और बाद के नियंत्रणों का चयन करते हैं, तो विभिन्न प्रकारों के नियंत्रणों का चयन करके, शिफ्ट कुंजी को दबाकर एक ही समय में आप कई नियंत्रणों का चयन कर सकते हैं। प्रॉपर्टीज़ विंडो उन गुणों को दोनों के लिए सामान्य दिखाती है, इसलिए आप उन सभी को समान आकार, रंग और पाठ फ़ील्ड आदि पर सेट कर सकते हैं। यहां तक ​​कि एक ही घटना संचालकों को कई नियंत्रणों को सौंपा जा सकता है।

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

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

एक संपत्ति जो बहुत उल्लेख नहीं करती है वह टैग संपत्ति है और फिर भी यह अविश्वसनीय रूप से उपयोगी हो सकती है। प्रॉपर्टीज़ विंडो में आप केवल टेक्स्ट असाइन कर सकते हैं लेकिन आपके कोड में आपके पास ऑब्जेक्ट से उतरने वाला कोई भी मूल्य हो सकता है।

मैंने पूरी सूची को देखने के लिए टैग का उपयोग किया है, जबकि इसके कुछ गुणों को एक सूची दृश्य में दिखाया गया है। उदाहरण के लिए, आप केवल ग्राहक का नाम और ग्राहक सारांश सूची में नंबर दिखाना चाह सकते हैं। लेकिन चयनित ग्राहक पर राइट क्लिक करें और फिर ग्राहक के सभी विवरणों के साथ एक फॉर्म खोलें। यह आसान है यदि आप ग्राहक की सूची को ग्राहक की सभी विवरणों को मेमोरी में पढ़कर और टैग में कस्टमर क्लास ऑब्जेक्ट का संदर्भ देते हुए बनाते हैं। सभी नियंत्रणों में एक टैग है।

एक TabControl कई टैब होने से फॉर्म स्पेस को बचाने का एक आसान तरीका है। प्रत्येक टैब में एक आइकन या पाठ हो सकता है और आप किसी भी टैब का चयन कर सकते हैं और उसके नियंत्रण प्रदर्शित कर सकते हैं। TabControl एक कंटेनर है लेकिन इसमें केवल TabPages होता है। प्रत्येक टैबपेज एक कंटेनर भी है जिसमें सामान्य नियंत्रण हो सकते हैं।

उदाहरण के लिए x7.cs में, मैंने पहले टैब के साथ एक दो टैब पेज पैनल बनाया है, जिसमें तीन बटन वाले नियंत्रण और उस पर एक चेकबॉक्स है। दूसरे टैब पृष्ठ को लॉग्स लेबल किया गया है और सभी लॉग किए गए कार्यों को प्रदर्शित करने के लिए उपयोग किया जाता है जिसमें एक बटन क्लिक करना या चेक बॉक्स को टॉगल करना शामिल है। लॉग () नामक एक विधि को हर बटन क्लिक आदि को लॉग करने के लिए कहा जाता है। यह आपूर्ति की गई स्ट्रिंग को एक सूची बॉक्स में जोड़ता है।

मैंने दो राइट क्लिक पॉपअप मेनू आइटम को सामान्य तरीके से TabControl में भी जोड़ा है। सबसे पहले एक ContextMenuStrip को फॉर्म में जोड़ें और इसे TabControl के ContextStripMenu प्रॉपर्टी में सेट करें। दो मेनू विकल्प हैं नया पृष्ठ जोड़ें और इस पृष्ठ को निकालें। हालाँकि मैंने पृष्ठ हटाने को प्रतिबंधित कर दिया है इसलिए केवल नए जोड़े गए टैब पृष्ठ ही निकाले जा सकते हैं और मूल दो नहीं।

यह आसान है, बस एक नया टैब पेज बनाएं, इसे टैब के लिए एक टेक्स्ट कैप्शन दें, फिर इसे टैब टैब कॉन्ट्रोल के टैबपेज संग्रह में जोड़ें

एक पृष्ठ को निकालना केवल TabPages को कॉल करने का विषय है। टैब्स का उपयोग करके RemoveAt ()। वर्तमान में चयनित टैब प्राप्त करने के लिए सिलेक्टेक्स।

इस ट्यूटोरियल में हमने देखा कि कैसे कुछ अधिक परिष्कृत नियंत्रण काम करते हैं और उनका उपयोग कैसे किया जाता है। अगले ट्यूटोरियल में मैं GUI थीम को जारी रखने जा रहा हूं और बैकग्राउंड वर्कर थ्रेड को देखता हूं और दिखाता हूं कि इसका उपयोग कैसे करना है।

instagram story viewer