isxaker
@isxaker

Как правильно работать с файлом ресурсов пользовательского контрола?

В данный момент занимаюсь разработкой под winforms, пишу кастомный контрол. Возник вопрос, где хранить картинки, которые этот контрол использует. Я решил, что буду их хранить в файле ресурсов (.resx) не всего приложения, а только моего контрола.

Вопрос, как вы вытаскиваете картинки из ресурсов контрола/формы? Если хранить картинки в файле ресурсов проекта, то тут нет вопросов:
System.Drawing.Image myImg = Properties.Resources.ImageName;
or
System.Drawing.Image myImg = global::ProjectName.Properties.Resources.ImageName;

Однако, если я использую файл ресурсов контрола/формы, то приходится делать так:

using System.ComponentModel;

//init
ComponentResourceManager resources = new ComponentResourceManager(typeof(MyControlName));
//get image
System.Drawing.Image myImg = resources.GetObject("MyImageName");


Проблема заключается в том, что приходится ручками прописывать название файла картинки. Возможно ли работать с файлом ресурсов контрола/формы, так же, как с файлом ресурсов проекта, то есть без строк?

Мое временное решение заключается в том, что я создал статическое ридонли поле, которое хранит название файла картинки:
private readonly static string myImgName = "myImg_16x16";

соответственно, затем могу использовать так:
System.Drawing.Image myImg = resources.GetObject(myImgName);
  • Вопрос задан
  • 6641 просмотр
Пригласить эксперта
Ответы на вопрос 1
dobriykot
@dobriykot
Если я правильно понял проблему, это решается просто. Откройте файл с ресурсами, тот который с культурой по умолчанию и выставьте там access modifier = internal. Это выпадающий список сверху:
3zryvSr.png
Скорее всего у вас сейчас стоит No code generation.
Обращаться к ресурсам надо будет так, например:
tbShowDeleted.Image = tbShowDeleted.Checked ? Strings.box_tick : Strings.box_empty;

Имя файла ресурсов совпадает с названием класса. Т.е. у меня Strings.resx и Strings.ru.resx.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы