Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/27: Рейтинг темы: голосов - 27, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 14.08.2010
Сообщений: 19
1
.NET 4.x

Развернуть из трея по щелчку - не хочет нивкакую

15.08.2010, 05:39. Показов 5610. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Сворачиваю в трей по нажатию на кнопку:

C#
1
2
3
4
5
6
private void Tray_bt_Click(object sender, EventArgs e)
        {
            notifyIcon1.Visible=true;
            WindowState = FormWindowState.Minimized; //работает и без этого, но память не освобождает
            Hide();
        }
Сворачивается отлично, даже с эффектом (за счёт 4й строчки), появляется иконка, освобождается солидный кусок памяти...

Разворачиваю по щелчку на иконке в трее:

C#
1
2
3
4
5
6
        private void notifyIcon1_Click(object sender, EventArgs e)
        {
             WindowState = FormWindowState.Maximized;  //пробовал и без этого, и с WindowState = FormWindowState.Normal;
             notifyIcon1.Visible = false;
             Show();
        }
Не разворачивает, иконка продолжает висеть в трее... размер приложения в памяти тоже не меняется
Перелопалил весь форум, приведённые примеры не срабатывают... Что у меня не так во втором листинге?

Добавлено через 1 час 7 минут
Поставил точку останова на нажатие кнопки сворачивания в трей - как и должно, отладчик получает управление
Поставил точку останова на нажатие иконки в трее - ничего не происходит.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.08.2010, 05:39
Ответы с готовыми решениями:

Развернуть приложение из трея
Добрый день, тема не новая, но ответа не нашел. Как через WinApi можно развернуть приложение из...

Развернуть программу из трея
Таким образом сворачивается программа в трей- procedure TForm1.Button1Click(Sender: TObject);...

Развернуть програму из трея
Короче свернул программу в трей при помощи Shell_NotifyIcon, немогу развернуть обратно, то что я...

Развернуть копию программы из трея
Нужно чтобы 2ая копию программы разворачивала 1уй копию программы. Много читал по форумам но так и...

17
Padawan
473 / 323 / 30
Регистрация: 30.01.2010
Сообщений: 1,841
15.08.2010, 10:41 2
может надо указать, что показать надо именно саму форму?
C#
1
this.show
?
А память и не должна освобождаться насколько я понимаю. По крайней мере то, что использует твоя программа для того, чтобы существовать.
0
0 / 0 / 0
Регистрация: 14.08.2010
Сообщений: 19
15.08.2010, 10:48  [ТС] 3
Цитата Сообщение от Johny_D Посмотреть сообщение
может надо указать, что показать надо именно саму форму?
C#
1
this.show
?
А память и не должна освобождаться насколько я понимаю. По крайней мере то, что использует твоя программа для того, чтобы существовать.
C#
1
2
3
4
5
6
        private void notifyIcon1_Click(object sender, EventArgs e) //разворачиваем из трея по щелчку... НЕ РАБОТАЕТ
        {
             WindowState = FormWindowState.Maximized;
             notifyIcon1.Visible = false;
             this.Show();
        }
Результат тот же, ну то есть отсутствие результата. А память я так понял освобождается за счёт ресурсов... у меня там просто куча элементов.

Я уже даже пробовал этот код на пустой форме с одной кнопкой "свернуть"... результат тот же - сворачивает но не разворачивает... и бряк на клик по иконке не срабатывает....
0
Padawan
473 / 323 / 30
Регистрация: 30.01.2010
Сообщений: 1,841
15.08.2010, 11:20 4
Проверяй
Вложения
Тип файла: rar WF_TrayIcon_ShowHide.rar (32.1 Кб, 70 просмотров)
0
0 / 0 / 0
Регистрация: 14.08.2010
Сообщений: 19
15.08.2010, 11:43  [ТС] 5
Попытался перенести код ко мне в приложение

Bash
1
2
3
4
5
6
7
8
9
Ошибка    1   Тип "TestFormsApplication1.MainForm1" уже содержит определение для "components" C:\Documents and Settings\Ivan\Мои документы\Visual Studio 2010\Projects\TestFormsApplication1\TestFormsApplication1\Form1.cs   188 50  test
 
Ошибка    2   Тип "TestFormsApplication1.MainForm1" уже определяет член "Dispose" с такими же типами параметров  C:\Documents and Settings\Ivan\Мои документы\Visual Studio 2010\Projects\TestFormsApplication1\TestFormsApplication1\Form1.cs   189 33  test
 
Ошибка    3   Тип "TestFormsApplication1.MainForm1" уже определяет член "InitializeComponent" с такими же типами параметров  C:\Documents and Settings\Ivan\Мои документы\Visual Studio 2010\Projects\TestFormsApplication1\TestFormsApplication1\Form1.cs   203 22  test
 
Ошибка    4   Тип "TestFormsApplication1.MainForm1" уже содержит определение для "notifyIcon1"    C:\Documents and Settings\Ivan\Мои документы\Visual Studio 2010\Projects\TestFormsApplication1\TestFormsApplication1\Form1.cs   244 49  test
 
Ошибка    5   Тип "TestFormsApplication1.MainForm1" уже содержит определение для "Tray_bt"    C:\Documents and Settings\Ivan\Мои документы\Visual Studio 2010\Projects\TestFormsApplication1\TestFormsApplication1\Form1.cs   245 45  test
Чего-то я совсем перемудрил... пойду посплю.
0
Padawan
473 / 323 / 30
Регистрация: 30.01.2010
Сообщений: 1,841
15.08.2010, 12:48 6
Выложи свой код
0
Местный Ёжидзе
42 / 44 / 4
Регистрация: 03.03.2010
Сообщений: 225
15.08.2010, 13:27 7
pranik, Много у тебя для трея комманд, сейчас свой код покажу:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
        private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            proverka_tray();
        }
 
        // Проверка процедуры сварачивания-разворачивания в трее
        private void proverka_tray()
        {
            if (this.WindowState == FormWindowState.Minimized)
            {
                toolStripMenuItem2.Text = "Свернуть";
                this.WindowState = FormWindowState.Normal;
                this.Enabled = true;
            }
            else
            {
                toolStripMenuItem2.Text = "Развернуть";
                this.WindowState = FormWindowState.Minimized;
                this.Enabled = false;
            }
        }


Вот и всё, так у тебя будет всё работать

Тебе в помощь по скрытию-отображению формы.
0
0 / 0 / 0
Регистрация: 14.08.2010
Сообщений: 19
16.08.2010, 03:26  [ТС] 8
Мой код... ну точнее грубая копия.. большую часть я вырезал
Вложения
Тип файла: zip WindowsFormsApplication1.zip (330.8 Кб, 25 просмотров)
0
0 / 0 / 0
Регистрация: 14.08.2010
Сообщений: 19
16.08.2010, 03:46  [ТС] 9
Цитата Сообщение от hitmen047 Посмотреть сообщение
pranik, Много у тебя для трея комманд, сейчас свой код покажу:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
        private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            proverka_tray();
        }
 
        // Проверка процедуры сварачивания-разворачивания в трее
        private void proverka_tray()
        {
            if (this.WindowState == FormWindowState.Minimized)
            {
                toolStripMenuItem2.Text = "Свернуть";
                this.WindowState = FormWindowState.Normal;
                this.Enabled = true;
            }
            else
            {
                toolStripMenuItem2.Text = "Развернуть";
                this.WindowState = FormWindowState.Minimized;
                this.Enabled = false;
            }
        }


Вот и всё, так у тебя будет всё работать

Тебе в помощь по скрытию-отображению формы.
Я пока до менюшки в трее не дошёл (а точнее не получается пока, не разобрался)... интересно почему мой код не работает, и как его подправить.
Пробовал без проверки твой код на разворачивание (сворачивание у меня работает):

C#
1
2
3
4
5
6
private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
        {                
                this.WindowState = FormWindowState.Normal;
                this.Enabled = true;
                notifyIcon1.Visible = false;
        }
тоже не работает
0
464 / 341 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
16.08.2010, 04:33 10
Люди, тут проблема только и именно в том, что не срабатывает событие, а не в том, как разверорачивается окно.
1
0 / 0 / 0
Регистрация: 14.08.2010
Сообщений: 19
16.08.2010, 05:10  [ТС] 11
Блин, тот проект что я выложил неправильный...
вместо
C#
1
2
3
4
5
private void notifyIcon1_Click(object sender, EventArgs e)
        {
            notifyIcon1.Visible = true;
            Hide();
        }
там надо вставить
C#
1
2
3
4
5
private void notifyIcon1_Click(object sender, EventArgs e)
        {
            notifyIcon1.Visible = false;
            Show();
        }
Добавлено через 10 минут
Цитата Сообщение от body90 Посмотреть сообщение
Люди, тут проблема только и именно в том, что не срабатывает событие, а не в том, как разверорачивается окно.
Вы правильно поняли суть, я пробовал даже
C#
1
2
3
4
5
6
7
8
9
        private void notifyIcon1_Click(object sender, EventArgs e)
        {
            Application.Exit(); 
-//а ещё
Application.Restart();
вызовы диалоговых окон
запуск файлов
//-
        }
и прочего рода функции... результата нет, брейкпоинт не срабатывает... приложение не реагирует...
Может проблема не в коде и реализации функции а в самой IDE (RU MSVS 2010 RTM)? Ну никак не возникает события на клик по иконке, ни на один, ни на двойной... Уже начинаю думать о своей полной не обучаемости и криворукости.
0
Заблокирован
16.08.2010, 05:29 12
У тебя в конструкторе это событие прописано this.notifyIcon1.Click += new System.EventHandler(this.notifyIcon1_Click);?
1
0 / 0 / 0
Регистрация: 14.08.2010
Сообщений: 19
16.08.2010, 05:40  [ТС] 13
Цитата Сообщение от SSV Посмотреть сообщение
У тебя в конструкторе это событие прописано this.notifyIcon1.Click += new System.EventHandler(this.notifyIcon1_Click);?
Неа, в код констуктора я действительно это и не вписал (я туда и не заглядывал...) . Спасибо за ответ, исправил - всё работает.
Тему можно закрывать.
0
Заблокирован
16.08.2010, 05:52 14
Тебе не обязательно в ручную это прописывать. Открой свойства notifyIcon1, выбери вкладку события, это там где молния нарисована, найди нужное для тебя событие и дважды кликни на нем. Студия автоматически добавит это событие в конструктор.
1
0 / 0 / 0
Регистрация: 14.08.2010
Сообщений: 19
16.08.2010, 05:54  [ТС] 15
Спасибо, запомню совет на будущее)
0
Местный Ёжидзе
42 / 44 / 4
Регистрация: 03.03.2010
Сообщений: 225
16.08.2010, 12:28 16
pranik, Ты почитай внимательнее. Вот код который тебе нужен.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            proverka_tray();
        }
 
        // Проверка процедуры сварачивания-разворачивания в трее
        private void proverka_tray()
        {
            if (this.WindowState == FormWindowState.Minimized && this.Enabled == false
) // В трее ли окно
            {
                this.WindowState = FormWindowState.Normal;
                this.Enabled = true;
            }
            else
            {
                this.WindowState = FormWindowState.Minimized;
                this.Enabled = false;
            }
        }
Всё должно работать на 100%
1
0 / 0 / 0
Регистрация: 14.08.2010
Сообщений: 19
16.08.2010, 22:29  [ТС] 17
Да не, это уже лишнее. К тому же когда окно развёрнуто иконки в трее нет, соответственно и проверки не нужны.
0
5 / 5 / 0
Регистрация: 22.06.2010
Сообщений: 22
06.06.2011, 14:29 18
Вот попробуй...
C#
1
2
3
4
5
6
7
8
9
10
11
12
private void button1_Click(object sender, EventArgs e)
        {
            ShowInTaskbar = false;
            Hide();
            notifyIcon1.Visible = true;
        }
        private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            Opacity = 1000;
            ShowInTaskbar = true;
            notifyIcon1.Visible = false;
            this.Show();
0
06.06.2011, 14:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.06.2011, 14:29
Помогаю со студенческими работами здесь

Как развернуть форму из трея?
Всем привет:) Как программно развернуть программу из трея?

Не получается развернуть приложение из трея
Доброго времени суток форумчане. Подскажите по каким причинам может не работать команда...

Развернуть форму из трея через SetForegroundWindow
В общем при запуске программы, она находит другой процесс Z по имени и вызывает его командой...

Зависают torrent-программы, развернуть из трея не удается
Сначала мюторрент... Через некоторое время работы не отвечает... Развернуть из трея тоже не...


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

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