วิธีการสร้างและใช้ทรัพยากรใน. NET


192

ฉันจะสร้างทรัพยากรที่ฉันสามารถอ้างอิงและใช้ในส่วนต่าง ๆ ของโปรแกรมได้อย่างง่ายดายได้อย่างไร

ปัญหาเฉพาะของฉันคือฉันมี NotifyIcon ที่ฉันต้องการเปลี่ยนไอคอนขึ้นอยู่กับสถานะของโปรแกรม ปัญหาทั่วไป แต่ปัญหาหนึ่งที่ฉันต้องดิ้นรนมาเป็นเวลานาน

คำตอบ:


325

หลังจากค้นหาไปรอบ ๆ และปูด้วยหินหลายจุดด้วยกันจาก StackOverflow (ฉันรักสถานที่นี้มาแล้ว) ปัญหาส่วนใหญ่ก็ผ่านขั้นตอนนี้ไปแล้ว ฉันพยายามที่จะหาคำตอบสำหรับปัญหาของฉัน

วิธีสร้างทรัพยากร:

ในกรณีของฉันฉันต้องการสร้างไอคอน มันเป็นกระบวนการที่คล้ายกันไม่ว่าคุณต้องการเพิ่มข้อมูลประเภทใดเป็นทรัพยากร

  • คลิกขวาที่โครงการที่คุณต้องการเพิ่มทรัพยากร ทำสิ่งนี้ใน Solution Explorer เลือกตัวเลือก "คุณสมบัติ" จากรายการ
  • คลิกที่แท็บ "ทรัพยากร"
  • ปุ่มแรกที่อยู่ด้านบนของแถบจะให้คุณเลือกประเภทของทรัพยากรที่คุณต้องการเพิ่ม มันควรเริ่มต้นด้วยสายอักขระ เราต้องการเพิ่มไอคอนดังนั้นคลิกที่มันและเลือก "ไอคอน" จากรายการตัวเลือก
  • ถัดไปย้ายไปที่ปุ่มที่สอง "เพิ่มทรัพยากร" คุณสามารถเพิ่มทรัพยากรใหม่หรือถ้าคุณมีไอคอนที่สร้างไว้แล้วคุณสามารถเพิ่มมันได้เช่นกัน ทำตามคำแนะนำที่คุณเลือก
  • ณ จุดนี้คุณสามารถดับเบิลคลิกทรัพยากรที่เพิ่งเพิ่มใหม่เพื่อแก้ไข หมายเหตุทรัพยากรยังปรากฏใน Solution Explorer และการคลิกสองครั้งก็มีประสิทธิภาพเช่นกัน

วิธีใช้ทรัพยากร:

เยี่ยมมากเรามีแหล่งข้อมูลใหม่ของเราและเราอยากมีไอคอนที่น่ารักที่เปลี่ยนแปลง ... เราจะทำอย่างไร โชคดีที่พวกเรา C # ทำให้มันง่ายเหลือเกิน

มีคลาสแบบสแตติกที่เรียกProperties.Resourcesว่าให้คุณเข้าถึงทรัพยากรทั้งหมดของคุณดังนั้นรหัสของฉันจึงง่ายเหมือน:

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

ทำ! เสร็จแล้ว! ทุกอย่างเรียบง่ายเมื่อคุณรู้ใช่มั้ย


ขอบคุณสำหรับสิ่งนี้กำลังมองหาสิ่งเดียวกัน มีวิธีฝังไฟล์. ico ในไฟล์สั่งการเพื่อไม่ให้แสดงเป็นไฟล์แยกกันหรือไม่? ฉันหวังว่าคำถามของฉันจะสมเหตุสมผล ขอแสดงความนับถือ
Amc_rtty

1
@Andrei: นั่นคือสิ่งที่ทรัพยากรคือ เมื่อเพิ่มแล้วมันจะถูกฝังเป็นส่วนหนึ่งของคอมไพล์ exe
Matthew Scharley

1
"... ปัญหาส่วนใหญ่ได้ผ่านขั้นตอนนี้ไปแล้ว" - จริงเกินไป ... ขอบคุณที่รวบรวมสิ่งนี้เข้าด้วยกัน! ฉันรู้ว่ามันง่าย ... ในที่สุด
roadsunknown

1
ในฐานะที่เป็นบันทึกด้านไฟล์ทรัพยากรจะถูกล็อคลงในเวลารวบรวม ดังนั้นการเปลี่ยนแปลงแบบไดนามิกที่รันไทม์จึงไม่เปลี่ยนแปลงค่าที่มีอยู่เพียงเล็กน้อย ใช้ไฟล์กำหนดค่าหากคุณต้องการเปลี่ยนค่าที่รันไทม์ ในกรณีนี้จะช่วยให้ทุกคน
Purusartha

1
ใน VB.NET สามารถเข้าถึงทรัพยากรผ่านทาง "My.Resources.GreenIcon"
andy

9

ข้างต้นใช้งานไม่ได้กับฉันอย่างที่ฉันคาดไว้กับ Visual Studio 2010 มันจะไม่ยอมให้ฉันเข้าถึง Properties แหล่งข้อมูลกล่าวว่าไม่สามารถเข้าถึงได้เนื่องจากปัญหาการอนุญาต ในที่สุดฉันก็ต้องเปลี่ยนการตั้งค่าการคงอยู่ในคุณสมบัติของทรัพยากรและจากนั้นฉันก็พบวิธีการเข้าถึงผ่านทางไฟล์ Resources.Designer.cs ซึ่งมีตัวรับสัญญาณอัตโนมัติที่ให้ฉันเข้าถึงไอคอนผ่าน MyNamespace.Properties.Resources .NameFromAddingTheResource ที่ส่งคืนวัตถุประเภทไอคอนพร้อมใช้งาน


7

วิธีการดังกล่าวใช้งานได้ดี

อีกวิธีหนึ่ง (ฉันสมมติว่าเว็บที่นี่) คือการสร้างหน้าของคุณ เพิ่มการควบคุมไปยังหน้า จากนั้นขณะที่อยู่ในโหมดการออกแบบไปที่: เครื่องมือ> การสร้างทรัพยากรท้องถิ่น ไฟล์ทรัพยากรจะปรากฏขึ้นโดยอัตโนมัติในโซลูชันที่มีการควบคุมทั้งหมดในหน้าแมปในไฟล์ทรัพยากร

หากต้องการสร้างทรัพยากรสำหรับภาษาอื่น ๆ ให้ผนวกภาษาของอักขระ 4 ตัวต่อท้ายชื่อไฟล์ก่อนส่วนขยาย ( Account.aspx.en-US.resx, Account.aspx.es-ES.resx ... ฯลฯ )

เพื่อดึงรายการที่ระบุใน behind รหัสเพียง GetLocalResourceObject([resource entry key/name])แต่เรียกวิธีการนี้:

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.