2015-05-03 3 views
2

У меня все еще есть проблема, что я не знаю, где хранить мой TrayIcon. В принципе, если Windows собирается запустить мою программу из «автозапуска» ... она разбилась. Я узнал, что мой заданный путь к TrayIcon - проблема. Загружаю TrayIcon с помощью этой команды в C# WPF:Где я должен хранить TrayIcon моего приложения?

NotifiIcon.Icon = new System.Drawing.Icon(@"icon.ico"); 

Потому что нет никаких проблем в целом ручного запуска процесса (двойной щелчок по исполняемому файлу). Но, когда я пытаюсь запустить программу из реестра Windows при запуске, программа выйдет из строя. Проблема заключается в том, что процесс автозапуска не смог найти значок. Дальше я пробовал:

NotifiIcon.Icon = new System.Drawing.Icon(Environment.CurrentDirectory + @"\icon.ico"); 

Но то же самое произошлоd.

Итак, две вещи, где я собираюсь найти лучший способ (мы надеемся):

  1. Есть ли способ решить эту проблему без использования каталога Windows, чтобы сохранить икону, или
  2. Есть ли место сохранения в любой системе Windows, чтобы сохранить значок?
+1

Вы можете хранить и получить доступ к значку в качестве встроенного ресурса, или в файле ресурсов. Это в основном включает сам значок в сгенерированной сборке. Вам не нужно знать какие-либо пути, кроме пространства имен вашей сборки. –

+3

Два фрагмента идентичны и имеют ту же самую проблему, kaboom, когда CurrentDirectory не там, где вы надеетесь. Сначала используйте ресурс, Assembly.Location. –

+0

Спасибо, что помогли мне. Я решил проблему, используя «Drag & Drop», чтобы добавить значок в папку «Изображения». Затем я установил путь к: 'Stream iconStream = System.Windows.Application.GetResourceStream (новый Uri (« pack: // application: ,,,/Images/sqldbmb.ico »)). Stream; ! – Webapache

ответ

0

Вы, вероятно, не должны использовать Environment.CurrentDirectory, но Application.StartupPath.

Если вы сделаете следующее, он будет работать:

_trayIcon = new NotifyIcon 
     { 
      Text = "Some application text", 
      Icon = new Icon(Path.Combine(Application.StartupPath, "icon.ico"), DefaultMaximumSize), 
      Visible = true 
     }; 
Смежные вопросы