2011-02-11 14 views
5

मैं एक विधि लिख रहा हूं जो पास किए गए फॉर्म तत्व का स्क्रीनशॉट लेगा, और इसे प्रिंट करेगा। मुझे कुछ चुनौतियों का सामना करना पड़ रहा है। मैं इस पद्धति को किसी भी प्रकार के फॉर्म तत्व के बारे में स्वीकार करने के लिए पर्याप्त सामान्य बनाने में सक्षम होना चाहता हूं। मैंने "ऑब्जेक्ट" टाइप करने के लिए "तत्व" तर्क सेट किया है। मुझे लगता है कि मुझे "टाइप" तर्क पारित करने की भी आवश्यकता होगी या यह पता लगाने का कोई तरीका है कि वस्तु पारित होने के बाद किस प्रकार का है?विधि तर्क के रूप में फॉर्म तत्वों को स्वीकार करना?

static public void PrintFormElement(object element, ?type?){ 

} 

क्या मैं इस समस्या को सही तरीके से देख रहा हूं? किसी भी सलाह की सराहना की जाएगी धन्यवाद!

+0

तरह लागू किया जा सकता है क्या आप कहते हैं कि हम यहाँ अपने शीर्षक को संपादित बेहतर हाथ में समस्या को प्रतिबिंबित करने के हैं? –

उत्तर

3

मुझे लगता है कि आपके elementControl होना चाहिए, और हर ControlDrawToBitmap() विधि है कि आप इसके बारे में 'स्क्रीनशॉट' लेने के लिए उपयोग कर सकते हैं।

तो आप टाइप पैरामीटर के बारे में सभी को भूल सकते हैं, क्योंकि polymorphism की वजह से आपको इसकी आवश्यकता नहीं होगी।

+0

अरे, यह बहुत अच्छा है। अब मैं उत्सुक हूं, यह एक चीज़ को छोड़कर ठीक काम कर रहा है। जब मैं एक समृद्ध टेक्स्टबॉक्स मुद्रित करने का प्रयास करता हूं, यदि बॉक्स के अंदर पाठ है, तो यह वास्तव में प्रिंट नहीं करता है। क्या इसके आसपास कोई रास्ता है? – sooprise

4

आप यह पता लगा सकते हैं कि is/as ऑपरेटरों का उपयोग करके या GetType का उपयोग कर रहा है। यदि आपको उनका उपयोग करना है तो आमतौर पर यह एक डिजाइन गंध का थोड़ा सा होता है। आप उस प्रकार के विशिष्ट करने की क्या योजना बना रहे हैं?

यदि आप दृश्य तत्वों के बारे में बात कर रहे हैं, तो आप object के बजाय Control का उपयोग करना चाह सकते हैं।

1

मुझे लगता है कि object बहुत सामान्य है, मैं इसके बजाय Control पर जाऊंगा। हालांकि आपको इस प्रकार में पास करने की आवश्यकता नहीं है, आप इसे is का उपयोग करके इसके प्रकार के लिए पूछ सकते हैं।

1

नियंत्रण बेस क्लास का उपयोग करने के लिए सुझाव देने वाले उत्तरों पर विस्तार करने के लिए। ASDFHelper, ASDFUtility और स्थिर विधियों से भरे अन्य वर्गों को बनाने से बचने के लिए मैं आपके कार्य को एक विस्तार विधि बनाउंगा।

static public void PrintFormElement(this Control element){ 
    element.DrawToBitmap(); 
} 

यह तो इस

new TextBox().PrintFormElement(); 
संबंधित मुद्दे

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