.NET में संसाधन कैसे बनायें और उपयोग करें


192

मैं एक संसाधन कैसे बना सकता हूं जिसे मैं अपने कार्यक्रम के विभिन्न हिस्सों में आसानी से संदर्भित और उपयोग कर सकता हूं?

मेरी विशिष्ट समस्या यह है कि मेरे पास एक NotifyIcon है जिसे मैं कार्यक्रम की स्थिति के आधार पर आइकन बदलना चाहता हूं। एक आम समस्या है, लेकिन मैं लंबे समय से संघर्ष कर रहा हूं।

जवाबों:


325

खैर, StackOverflow (जी, मैं इस जगह को पहले से ही प्यार करता हूं) के आसपास से विभिन्न बिंदुओं को एक साथ खोज और कोब करने के बाद, अधिकांश समस्याएं पहले से ही इस चरण से अतीत थीं। हालांकि मैंने अपनी समस्या के उत्तर का पता लगाने का प्रबंधन किया।

संसाधन कैसे बनाएँ:

मेरे मामले में, मैं एक आइकन बनाना चाहता हूं। यह एक समान प्रक्रिया है, इससे कोई फर्क नहीं पड़ता कि आप किस प्रकार के डेटा को एक संसाधन के रूप में जोड़ना चाहते हैं।

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

संसाधन का उपयोग कैसे करें:

महान, इसलिए हमारे पास हमारे नए संसाधन हैं और हम उन प्यारे बदलते आइकनों के लिए खुजली कर रहे हैं ... हम ऐसा कैसे करते हैं? खैर, हमें भाग्यशाली, सी # यह बेहद आसान बनाता है।

एक स्थिर वर्ग है जिसे Properties.Resourcesआप अपने सभी संसाधनों तक पहुँच प्रदान करते हैं, इसलिए मेरा कोड समाप्त हो गया है:

paused = !paused;
if (paused)
    notifyIcon.Icon = Properties.Resources.RedIcon;
else
    notifyIcon.Icon = Properties.Resources.GreenIcon;

किया हुआ! ख़त्म होना! जब आप जानते हैं कि सब कुछ सरल है, है न?


इसके लिए धन्यवाद, ठीक उसी चीज की तलाश थी। वहाँ निष्पादन योग्य में .ico फ़ाइलों को एम्बेड करने का एक तरीका है ताकि वे अलग-अलग फ़ाइलों के रूप में न दिखाएं? मुझे आशा है कि मेरा प्रश्न समझ में आता है। का संबंध है,
Amc_rtty

1
@Andrei: यह वास्तव में एक संसाधन है। एक बार इसे जोड़ने के बाद, यह संकलित निर्वासन के हिस्से के रूप में एम्बेडेड हो जाएगा।
मैथ्यू शार्ले

1
"... ज्यादातर समस्याएं पहले से ही इस चरण में थीं" - टू ट्रू ... इसे एक साथ रखने के लिए धन्यवाद! मुझे पता था कि यह सरल था ... अंत में।
रोडकिनाउन

1
एक साइड नोट के रूप में, संसाधन फ़ाइलों को संकलन समय पर बंद कर दिया जाता है। इसलिए, गतिशील रूप से उन्हें रनटाइम में बदलने से मौजूदा मूल्यों को बदलने के लिए बहुत कम है। यदि आप रनटाइम पर मान बदलना चाहते हैं, तो कॉन्फ़िगर फ़ाइलों का उपयोग करें। मामले में यह किसी की मदद करता है।
पुरुषार्थ

1
VB.NET में, संसाधनों को "My.Resources.GreenIcon" के माध्यम से एक्सेस किया जाता है
andy

9

उपरोक्त वास्तव में मेरे लिए काम नहीं कर रहा था जैसा कि मैंने विजुअल स्टूडियो 2010 से उम्मीद की थी। यह मुझे प्रॉपर्टीज तक नहीं पहुंचने देगा। सूत्रों ने कहा, यह अनुमति के मुद्दों के कारण दुर्गम था। मुझे अंततः संसाधन के गुणों में दृढ़ता सेटिंग्स को बदलना पड़ा और फिर मैंने पाया कि कैसे संसाधन के माध्यम से इसे एक्सेस किया जाए। .NameFromAddingTheResource। यह केवल उपयोग करने के लिए तैयार प्रकार चिह्न का एक वस्तु देता है।


7

उपरोक्त विधि अच्छा काम करती है।

एक और तरीका (मैं यहां वेब मान रहा हूं) अपना पेज बनाना है। पेज पर नियंत्रण जोड़ें। फिर डिज़ाइन मोड में जाते समय: टूल्स> स्थानीय संसाधन उत्पन्न करें । संसाधन फ़ाइल में मैप किए गए पेज में सभी नियंत्रणों के साथ एक संसाधन फ़ाइल स्वचालित रूप से समाधान में दिखाई देगी।

अन्य भाषाओं के लिए संसाधन बनाने के लिए, फ़ाइल नाम के अंत में एक्सटेंशन ( Account.aspx.en-US.resx, Account.aspx.es-ES.resx) से पहले 4 वर्ण वाली भाषा को जोड़ें ... etc) ।

कोड के पीछे विशिष्ट प्रविष्टियों को पुनः प्राप्त करने के लिए, बस इस विधि को कॉल करें GetLocalResourceObject([resource entry key/name]):।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.