ฉันจะสร้างทรัพยากรที่ฉันสามารถอ้างอิงและใช้ในส่วนต่าง ๆ ของโปรแกรมได้อย่างง่ายดายได้อย่างไร
ปัญหาเฉพาะของฉันคือฉันมี NotifyIcon ที่ฉันต้องการเปลี่ยนไอคอนขึ้นอยู่กับสถานะของโปรแกรม ปัญหาทั่วไป แต่ปัญหาหนึ่งที่ฉันต้องดิ้นรนมาเป็นเวลานาน
ฉันจะสร้างทรัพยากรที่ฉันสามารถอ้างอิงและใช้ในส่วนต่าง ๆ ของโปรแกรมได้อย่างง่ายดายได้อย่างไร
ปัญหาเฉพาะของฉันคือฉันมี NotifyIcon ที่ฉันต้องการเปลี่ยนไอคอนขึ้นอยู่กับสถานะของโปรแกรม ปัญหาทั่วไป แต่ปัญหาหนึ่งที่ฉันต้องดิ้นรนมาเป็นเวลานาน
คำตอบ:
หลังจากค้นหาไปรอบ ๆ และปูด้วยหินหลายจุดด้วยกันจาก StackOverflow (ฉันรักสถานที่นี้มาแล้ว) ปัญหาส่วนใหญ่ก็ผ่านขั้นตอนนี้ไปแล้ว ฉันพยายามที่จะหาคำตอบสำหรับปัญหาของฉัน
วิธีสร้างทรัพยากร:
ในกรณีของฉันฉันต้องการสร้างไอคอน มันเป็นกระบวนการที่คล้ายกันไม่ว่าคุณต้องการเพิ่มข้อมูลประเภทใดเป็นทรัพยากร
วิธีใช้ทรัพยากร:
เยี่ยมมากเรามีแหล่งข้อมูลใหม่ของเราและเราอยากมีไอคอนที่น่ารักที่เปลี่ยนแปลง ... เราจะทำอย่างไร โชคดีที่พวกเรา C # ทำให้มันง่ายเหลือเกิน
มีคลาสแบบสแตติกที่เรียกProperties.Resources
ว่าให้คุณเข้าถึงทรัพยากรทั้งหมดของคุณดังนั้นรหัสของฉันจึงง่ายเหมือน:
paused = !paused;
if (paused)
notifyIcon.Icon = Properties.Resources.RedIcon;
else
notifyIcon.Icon = Properties.Resources.GreenIcon;
ทำ! เสร็จแล้ว! ทุกอย่างเรียบง่ายเมื่อคุณรู้ใช่มั้ย
ข้างต้นใช้งานไม่ได้กับฉันอย่างที่ฉันคาดไว้กับ Visual Studio 2010 มันจะไม่ยอมให้ฉันเข้าถึง Properties แหล่งข้อมูลกล่าวว่าไม่สามารถเข้าถึงได้เนื่องจากปัญหาการอนุญาต ในที่สุดฉันก็ต้องเปลี่ยนการตั้งค่าการคงอยู่ในคุณสมบัติของทรัพยากรและจากนั้นฉันก็พบวิธีการเข้าถึงผ่านทางไฟล์ Resources.Designer.cs ซึ่งมีตัวรับสัญญาณอัตโนมัติที่ให้ฉันเข้าถึงไอคอนผ่าน MyNamespace.Properties.Resources .NameFromAddingTheResource ที่ส่งคืนวัตถุประเภทไอคอนพร้อมใช้งาน
วิธีการดังกล่าวใช้งานได้ดี
อีกวิธีหนึ่ง (ฉันสมมติว่าเว็บที่นี่) คือการสร้างหน้าของคุณ เพิ่มการควบคุมไปยังหน้า จากนั้นขณะที่อยู่ในโหมดการออกแบบไปที่: เครื่องมือ> การสร้างทรัพยากรท้องถิ่น ไฟล์ทรัพยากรจะปรากฏขึ้นโดยอัตโนมัติในโซลูชันที่มีการควบคุมทั้งหมดในหน้าแมปในไฟล์ทรัพยากร
หากต้องการสร้างทรัพยากรสำหรับภาษาอื่น ๆ ให้ผนวกภาษาของอักขระ 4 ตัวต่อท้ายชื่อไฟล์ก่อนส่วนขยาย ( Account.aspx.en-US.resx, Account.aspx.es-ES.resx ... ฯลฯ )
เพื่อดึงรายการที่ระบุใน behind รหัสเพียง GetLocalResourceObject([resource entry key/name])
แต่เรียกวิธีการนี้: