मैं C # में GUI एप्लिकेशन बनाने के लिए Visual Studio का उपयोग कर रहा हूं। टूलबॉक्स एक निफ्टी घटक पैलेट के रूप में कार्य करता है जो मुझे बटन और अन्य तत्वों को आसानी से खींचने और छोड़ने की अनुमति देता है (स्पष्टता के लिए जब भी मैं अपने नियंत्रण पर "नियंत्रण" का अर्थ बटन कहूंगा), जो स्थिर रूपों को करना काफी आसान बनाता है। हालाँकि, मैं दो समस्याओं में भाग लेता हूँ:
- पहली जगह में बटन बनाना बहुत काम का है। जब मेरे पास एक फॉर्म होता है जो स्थिर नहीं होता है (यानी बटन या अन्य नियंत्रण उपयोगकर्ता द्वारा किए गए अनुसार रन टाइम पर बनाए जाते हैं) मैं पैलेट का उपयोग बिल्कुल नहीं कर सकता। इसके बजाय मुझे प्रत्येक बटन को मैन्युअल रूप से बनाना होगा, जो भी विधि मैं उपयोग कर रहा हूं, उसमें कंस्ट्रक्टर को कॉल करके, और फिर मैन्युअल रूप से बटन की ऊंचाई, चौड़ाई, स्थिति, लेबल, ईवेंट हैंडलर और इसी तरह निर्दिष्ट करके प्रारंभ करें। यह बेहद थकाऊ है क्योंकि मुझे इन सभी कॉस्मेटिक मापदंडों पर अनुमान लगाने की आवश्यकता है कि यह देखने में सक्षम नहीं है कि फॉर्म कैसा दिखेगा, और यह प्रत्येक बटन के लिए दोहराए गए कोड की कई लाइनें भी उत्पन्न करता है।
- बटनों को कुछ करना भी बहुत काम है। पूर्ण विशेषताओं वाले एप्लिकेशन में घटनाओं से निपटना एक बहुत बड़ा दर्द है। एकमात्र तरीका मुझे पता है कि यह कैसे करना है एक बटन का चयन करना है, इसके गुणों में ईवेंट टैब पर जाएं,
OnClick
ईवेंट पर क्लिक करें ताकि यह ईवेंट केForm
कोड में उत्पन्न हो , फिर ईवेंट के बॉडी में भरें। चूंकि मैं तर्क और प्रस्तुति को अलग करना चाहता हूं, इसलिए मेरे सभी इवेंट हैंडलर उपयुक्त व्यावसायिक लॉजिक फ़ंक्शन के लिए सिंगल-लाइन कॉल करते हैं। लेकिन कई बटन के लिए इसका उपयोग करना (उदाहरण के लिए, एमएस वर्ड जैसे एप्लिकेशन में मौजूद बटनों की संख्या की कल्पना करना)Form
दर्जनों बॉयलरप्लेट ईवेंट हैंडलर विधियों के साथ मेरे कोड को प्रदूषित करता है और इसे बनाए रखना मुश्किल है।
इनकी वजह से, हैलो वर्ल्ड की तुलना में कोई भी GUI प्रोग्राम वास्तव में मेरे लिए बहुत अव्यवहारिक है। स्पष्ट होने के लिए, मुझे कोई समस्या नहीं है कि मैं उन कार्यक्रमों में जटिलता से निपटता हूं जो मैं लिखता हूं जिनमें न्यूनतम यूआई है - मुझे ऐसा लगता है कि मैं अपने व्यावसायिक तर्क कोड को बड़े पैमाने पर क्षमता के साथ ओओपी का उपयोग करने में सक्षम हूं। लेकिन जीयूआई विकसित करते समय, मैं फंस गया हूं। यह इतना थकाऊ लगता है कि मुझे लगता है कि मैं पहिया को फिर से मजबूत कर रहा हूं, और कहीं न कहीं एक किताब है जो बता रही है कि कैसे जीयूआई ठीक से करना है जो मैंने पढ़ा नहीं है।
क्या मैं कुछ भूल रहा हूँ? या क्या सभी C # डेवलपर्स सिर्फ दोहराव वाले इवेंट हैंडलर और बटन निर्माण कोड की अंतहीन सूचियों को स्वीकार करते हैं?
एक (उम्मीद के मुताबिक मददगार) संकेत के रूप में, मुझे उम्मीद है कि एक अच्छा जवाब के बारे में बात करेंगे:
- बार-बार बटन निर्माण को आसान बनाने के लिए OOP तकनीकों (जैसे फ़ैक्टरी पैटर्न) का उपयोग करना
- कई ईवेंट हैंडलर्स को एक एकल विधि में संयोजित
Sender
करना जो यह पता लगाने के लिए जांचता है कि किस बटन ने इसे कॉल किया है, और तदनुसार व्यवहार करता है - XAML और विंडोज फॉर्म के बजाय WPF का उपयोग करना
आपको इनमें से किसी का भी उल्लेख नहीं करना है। यह सिर्फ मेरा सबसे अच्छा अनुमान है कि मैं किस तरह के उत्तर की तलाश कर रहा हूं।