Сбой программы на C # (файл .ico) - PullRequest
0 голосов
/ 20 сентября 2010

Программа вылетает, если в той же папке нет файла .ico.У меня есть:

  1. Добавлен файл MyIcon.ico в разделе «Приложение», также проверен «встроенный манифест с настройками по умолчанию».
  2. Сделан файл .ico как встроенный ресурсДействие) в свойствах файла .ico.
  3. Добавлено this.Icon = new Icon("plat.ico"); в общедоступной форме.

Итак ... почему приложение не загружается?Что дает?

Ответы [ 4 ]

4 голосов
/ 20 сентября 2010

Используемый вами конструктор для Icon пытается прочитать "plat.ico" как имя файла, а не из встроенных ресурсов.

Если вы хотите загрузить Icon из ресурсов, вам нужно явно получить Stream из ресурса, а затем передать его в конструктор Icon.

Вероятно, это будет что-то похожее на:

// Add using System.Reflection; at the top of your file...

this.Icon = new Icon(
    Assembly.GetExecutingAssembly().GetManifestResourceStream("YourNamespace.plat.ico")
  );

В качестве альтернативы вы можете использовать перегрузку конструктора , которая извлекает данные непосредственно из ресурса по имени вместо имени файла:

this.Icon = new Icon(this.GetType(), "plat.ico");
1 голос
/ 29 августа 2012

У меня была такая же проблема в форме окна, где значок не был найден, даже если он находился в том же каталоге, что и форма.

notifyIcon1.Icon = new Icon("enabled.ico");

Я посмотрел на свойства файла .ico вVS2010 и увидел, что Копировать в выходной каталог было установлено на Не копировать .Я изменил его на Копировать всегда , и это помогло.

Иногда самое простое решение - лучшее решение.

0 голосов
/ 20 сентября 2010

Вы вызываете неправильный конструктор.Просто используйте это:

this.Icon = new Icon(this.GetType(), "plat.ico");

0 голосов
/ 20 сентября 2010

Вам необходимо установить для файла значка «Копировать в вывод» значение «Копировать всегда» или «Копировать, если новее».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...