Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
weboman
210 / 195 / 63
Регистрация: 13.08.2010
Сообщений: 1,531
Записей в блоге: 6
1

Как иконку выдрать из ресурсов, хочу при старте проги спрятать форму в трей?

13.07.2012, 08:07. Показов 2245. Ответов 8

Author24 — интернет-сервис помощи студентам
изсходя из названия темы, я уже проделал кой-какие операции по скрытию формы, а именно сделал это как написано на одном из форумов MSDN.

Вот как это выглядит:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using System;
using System.Windows.Forms;
 
namespace WindowsFormsApplication18
{
  static class Program
  {
    private static Form1 form1 = null;
    private static NotifyIcon notifyIcon = null;
 
    [STAThread]
    static void Main()
    {
      Application.EnableVisualStyles();
      Application.SetCompatibleTextRenderingDefault(false);
      notifyIcon = new NotifyIcon();
      notifyIcon.Icon = Properties.Resources.MyIcon; // ВОТ ЗДЕСЬ ПРОБЛЕМА
      notifyIcon.Click += notifyIcon_Click;
      notifyIcon.Visible = true;
      Application.Run();
    }
 
    private static void notifyIcon_Click(object sender, EventArgs e)
    {
      if (form1 == null || form1.IsDisposed)
        form1 = new Form1();
      if (!form1.Visible)
        form1.Show();
    }
  }
}
В нем предполагается, что иконка для значка в трее находится в ресурсе "MyIcon" приложения.
Для выхода из приложения нужно будет вызвать метод Dispose() у значка в трее и Application.Exit().

Все бы ничего, да вот только как эту самую иконку выдрать из ресурса (коего я создал предваря)?

C#
1
notifyIcon.Icon = Properties.Resources.MyIcon; // ВОТ ЗДЕСЬ ПРОБЛЕМА
Вот это у меня огромный стык стал, понимаю что нужно вбить имя файла (а точнее самого элемента ресурса), но сколько ни пытаюсь, все безтолку.

p.s. Использую Visual Studio C# 2008 Express Edition


Собтсвенно говоря сама ошибка:

Как иконку выдрать из ресурсов, хочу при старте проги спрятать форму в трей?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.07.2012, 08:07
Ответы с готовыми решениями:

Как убрать форму в трей при старте
public Form1() { InitializeComponent(); ni = new...

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

Сворачивание приложения в трей при старте
Приветствую уважаемых специалистов, Не очень понимаю, в чём тут дело и почему оно не работает....

Как спрятать программу в трей
Как осуществить работу программы в фоновом режиме?

8
+B
Заблокирован
13.07.2012, 08:14 2
Цитата Сообщение от AlienNation Посмотреть сообщение
В нем предполагается, что иконка
Для чего эти сложности? Заново изобретаем велосипед?
0
weboman
210 / 195 / 63
Регистрация: 13.08.2010
Сообщений: 1,531
Записей в блоге: 6
13.07.2012, 08:23  [ТС] 3
Для чего эти сложности? Заново изобретаем велосипед?
+B, все может быть, в C# недавно залез. Скажи как форму тогда в трей скрыть без этих всех премудростей при старте?
0
+B
Заблокирован
13.07.2012, 08:29 4
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
  //помещаем контрол notifyIcon1 на форму и в свойствах его выбираем иконку
        public Form1()
        {
            InitializeComponent();
 
            notifyIcon1.Visible = false;
            this.notifyIcon1.MouseDoubleClick += new MouseEventHandler(notifyIcon1_MouseDoubleClick);
            this.Resize += new System.EventHandler(this.Form1_Resize);
            this.Load += new EventHandler(Form1_Load);
        }
 
        void Form1_Load(object sender, EventArgs e)
        {
            this.WindowState = FormWindowState.Minimized;
        }
 
 
 
        private void Form1_Resize(object sender, EventArgs e)
        {
 
            if (WindowState == FormWindowState.Minimized)
            {
                Hide();
                notifyIcon1.Visible = true;
 
            }
        }
 
        private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            this.Show();
            notifyIcon1.Visible = false;
            WindowState = FormWindowState.Normal;
 
 
        }
1
weboman
210 / 195 / 63
Регистрация: 13.08.2010
Сообщений: 1,531
Записей в блоге: 6
13.07.2012, 08:45  [ТС] 5
+B,

Поробовал я твой вариант , все работает , но если бы ни один весомый глюк:

Как иконку выдрать из ресурсов, хочу при старте проги спрятать форму в трей?


Это кусок формы , который появляется всегда при запуске приложения, при чем всегда над кнопкой старта Windows 7.
0
+B
Заблокирован
13.07.2012, 09:24 6
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
  //помещаем контрол notifyIcon1 на форму и в свойствах его выбираем иконку
        public Form1()
        {
            InitializeComponent();
 
            notifyIcon1.Visible = false;
            this.notifyIcon1.MouseDoubleClick += new MouseEventHandler(notifyIcon1_MouseDoubleClick);
            this.Resize += new System.EventHandler(this.Form1_Resize);
            //  this.Load += new EventHandler(Form1_Load);
            this.Shown += new EventHandler(Form1_Shown);
 
 
        }
 
        void Form1_Shown(object sender, EventArgs e)
        {
            WindowState = FormWindowState.Minimized;
        }
 
 
 
        private void Form1_Resize(object sender, EventArgs e)
        {
 
            if (WindowState == FormWindowState.Minimized)
            {
                Hide();
                notifyIcon1.Visible = true;
 
            }
        }
 
        private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            this.Show();
            notifyIcon1.Visible = false;
            WindowState = FormWindowState.Normal;
 
 
        }
1
weboman
210 / 195 / 63
Регистрация: 13.08.2010
Сообщений: 1,531
Записей в блоге: 6
13.07.2012, 10:20  [ТС] 7
+B, Shown не сработало, этот глюк остался, зато если добавлю

C#
1
2
3
4
        protected override void OnActivated(EventArgs e)
        {
            this.Hide();
        }
Все будет нормально!

Спасибо +B!

Добавлено через 49 минут
О ужас, как же я поспешил! Теперь когда активирую форму [ клик по иконке в трее ], то она вообще исчезает, чего быть не должно.
0
+B
Заблокирован
13.07.2012, 10:34 8
Цитата Сообщение от AlienNation Посмотреть сообщение
Shown не сработало, этот глюк остался, зато если добавлю
Странный какой-то у тебя глюк. Я на экспишке и проверить это не могу. Попробуй изменять прозрачность формы.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
        private void Form1_Resize(object sender, EventArgs e)
        {
 
            if (WindowState == FormWindowState.Minimized)
            {
                Hide();
                this.Opacity = 0;
                notifyIcon1.Visible = true;
 
            }
        }
 
        private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            this.Opacity = 1;
            this.Show();
            notifyIcon1.Visible = false;
            WindowState = FormWindowState.Normal;
 
 
        }
1
weboman
210 / 195 / 63
Регистрация: 13.08.2010
Сообщений: 1,531
Записей в блоге: 6
13.07.2012, 10:47  [ТС] 9
С прозрачностью прокатило, правда мелькает при запуске, но я думаю это не сильно пугает.
0
13.07.2012, 10:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.07.2012, 10:47
Помогаю со студенческими работами здесь

Баг запуска свернутым в трей при старте винды
Привет, уже не первый раз использую в своих прогах сворачивание в трей. Недавно заметил такой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru