.NET'te kaynak oluşturma ve kullanma


192

Programımın çeşitli bölümlerinde kolayca başvurabildiğim ve kullanabileceğim bir kaynağı nasıl oluştururum?

Benim özel sorun, programın durumuna bağlı olarak simgesini değiştirmek istediğiniz bir NotifyIcon olmasıdır. Ortak bir sorun, ama uzun süredir mücadele ediyorum.

Yanıtlar:


325

Etrafta arama yaptıktan ve StackOverflow'un etrafından çeşitli noktaları birlikte topladıktan sonra (gee, bu yeri çok seviyorum), sorunların çoğu zaten bu aşamayı geçmişti. Yine de sorunuma bir cevap bulmayı başardım.

Kaynak nasıl oluşturulur:

Benim durumumda bir simge oluşturmak istiyorum. Yine de, kaynak olarak ne tür veriler eklemek istediğinize bakılmaksızın benzer bir işlemdir.

  • Kaynak eklemek istediğiniz projeyi sağ tıklayın. Bunu Solution Explorer'da yapın. Listeden "Özellikler" seçeneğini seçin.
  • "Kaynaklar" sekmesini tıklayın.
  • Çubuğun üst kısmındaki ilk düğme, eklemek istediğiniz kaynak türünü seçmenize olanak tanır. Dizede başlamalıdır. Bir simge eklemek istiyoruz, bu yüzden üzerine tıklayın ve seçenekler listesinden "Simgeler" i seçin.
  • Ardından, ikinci "Kaynak Ekle" düğmesine gidin. Yeni bir kaynak ekleyebilir veya daha önce yapılmış bir simgeniz varsa bunu da ekleyebilirsiniz. Hangi seçeneği seçerseniz seçin istemlerini izleyin.
  • Bu noktada, yeni eklenen kaynağı düzenlemek için çift tıklayabilirsiniz. Ayrıca, Çözüm Gezgini'nde kaynakların da göründüğünü ve orada çift tıklamanın da etkili olduğunu unutmayın.

Bir kaynak nasıl kullanılır:

Harika, bu yüzden yeni kaynağımız var ve bu sevimli değişen simgelere sahip olmak için kaşınıyoruz ... Bunu nasıl yapacağız? Şanslıyız, C # bunu son derece kolaylaştırıyor.

Properties.ResourcesTüm kaynaklarınıza erişmenizi sağlayan statik bir sınıf var , bu yüzden kodum şu kadar basit:

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

Bitti! Tamamlandı! Nasıl olduğunu bildiğinizde her şey basit, değil mi?


bunun için teşekkürler, tam olarak aynı şeyi arıyordu. ayrı dosyalar olarak gösterilmeyecek şekilde .ico dosyalarını yürütülebilir dosyaya gömmenin bir yolu var mı? umarım sorum mantıklıdır. saygılarımla,
Amc_rtty

1
@Andrei: Tam olarak bir kaynak bu. Eklendikten sonra, derlenen exe'nin bir parçası olarak gömülecektir.
Matthew Scharley

1
“... sorunların çoğu zaten bu aşamayı geçmişti” - Çok Doğru ... Bunu bir araya getirdiğiniz için teşekkürler! Sonunda basit olduğunu biliyordum.
roadsunknown

1
Yan not olarak, kaynak dosyaları derleme zamanında kilitlenir. Bu nedenle, çalışma zamanında dinamik olarak değiştirmek, mevcut değerleri değiştirmek için çok az şey yapar. Çalışma zamanında değerleri değiştirmek isterseniz, yapılandırma dosyalarını kullanın. Bu kimseye yardım ederse.
Purusartha

1
VB.NET'te kaynaklara, örneğin "My.Resources.GreenIcon"
andy

9

Yukarıdaki aslında Visual Studio 2010 ile beklediğim gibi benim için çalışmadı. Bu Properties.Resources erişmeme izin vermedi, izin sorunları nedeniyle erişilemez olduğunu söyledi. Nihayetinde kaynağın özelliklerindeki Kalıcılık ayarlarını değiştirmek zorunda kaldım ve daha sonra MyNamespace.Properties.Resources aracılığıyla simgeye erişmeme izin veren otomatik bir alıcıya sahip olan Resources.Designer.cs dosyası üzerinden nasıl erişileceğini buldum. .NameFromAddingTheResource. Bu, yalnızca kullanıma hazır Icon türünde bir nesne döndürür.


7

Yukarıdaki yöntem iyi çalışıyor.

Başka bir yöntem (burada web varsayıyorum) sayfanızı oluşturmaktır. Sayfaya kontroller ekleyin. Ardından tasarım modundayken: Araçlar> Yerel Kaynak Oluştur'a gidin . Kaynak dosyadaki sayfadaki tüm denetimlerle birlikte özümde otomatik olarak bir kaynak dosyası görünür.

Diğer diller için kaynak oluşturmak için, uzantıdan önce 4 karakter dilini dosya adının sonuna ekleyin ( Account.aspx.en-US.resx, Account.aspx.es-ES.resx ... etc).

Kod arkasında belirli girişlerini almak için, sadece bu yöntemi çağırın: GetLocalResourceObject([resource entry key/name]).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.