Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
VasNasSev
0 / 0 / 0
Регистрация: 09.11.2015
Сообщений: 61
1

Как отобразить контекстное меню для иконки в трее?

17.03.2016, 14:07. Просмотров 1308. Ответов 8
Метки нет (Все метки)

Добрый день! Подскажите пожалуйста, как запустить контекстное меню трея во время работы функции(программы)?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2016, 14:07
Ответы с готовыми решениями:

Как создать контекстное меню. Например нажимая на richTextBox правой кнопкой мыши, мне бы предоставлялось контекстное меню
Как создать контекстное меню. Например нажимая на richTextBox правой кнопкой мыши, мне бы...

Отобразить контекстное меню
Привет. Я тут столкнулся с таким вопросом, как контекстное меню. Можно ли отображать стандартное...

Отобразить контекстное меню вручную
Здравствуйте. Подскажите как отобразить контекстное меню вручную System.Drawing.Point pt = new...

Как задать размер иконки в трее
Здравствуйте, у меня возникла проблема - моё приложение показывает в трее картинку погоды и...

Как сделать по нажатию иконки в трее вылазил MenuScript
Ну вот мне например нужно чтобы когда на иконку программы в трее кликнли правой кнопкой мыши то...

8
Sanya_sa
Модератор
806 / 745 / 313
Регистрация: 03.02.2015
Сообщений: 4,806
Записей в блоге: 9
Завершенные тесты: 3
17.03.2016, 14:38 2
https://msdn.microsoft.com/ru-ru/lib...v=vs.110).aspx
0
VasNasSev
0 / 0 / 0
Регистрация: 09.11.2015
Сообщений: 61
17.03.2016, 21:37  [ТС] 3
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
 private void button3_Click_1(object sender, EventArgs e)
        {
            string filename;
           
            if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
            {
                
                //Контекстное меню в трее
                m_menu = new ContextMenu();
                m_menu.MenuItems.Add(0,
                    new MenuItem("Show", new System.EventHandler(Show_Click)));
                m_menu.MenuItems.Add(1,
                    new MenuItem("Hide", new System.EventHandler(Hide_Click)));
                m_menu.MenuItems.Add(2,
                    new MenuItem("Exit", new System.EventHandler(Exit_Click)));
                m_menu.MenuItems.Add(3,
                    new MenuItem("Stop", new System.EventHandler(Stop_Click)));
                m_menu.MenuItems.Add(4,
                    new MenuItem("Continue", new System.EventHandler(Continue_Click)));
                //
 
               // Работа в фоновом режиме, перемещение программы в трей
                Hide();
                notifyIcon1.Icon = new Icon("Lemon64 (1).ico");
                notifyIcon1.ContextMenu = m_menu;
                notifyIcon1.BalloonTipTitle = "Программа начала свою работу";
                notifyIcon1.BalloonTipText = "Обратите внимание что программа была спрятана и продолжит свою работув трее.";
                notifyIcon1.ShowBalloonTip(5000);//показывает сколько милисекунд будет спрятана программа
                //
                
               
                filename = folderBrowserDialog1.SelectedPath;//запись в переменную путь
                    textBox3.Text = filename;//вывод пути
 
                string[] PathPhoto3 = Directory.GetFiles(filename, "*.*", SearchOption.AllDirectories);
 
                //количество файлов
                int SumFiles = PathPhoto3.Length;
                    label2.Text = SumFiles.ToString();
                //
 
                //=====Запуск функции Function1===============
                    Function1(PathPhoto3, filename);
                //============================================
 
                //Удаление лишних папок
                string[] dirs = Directory.GetDirectories(filename, "*", SearchOption.AllDirectories);
 
                for (int y = dirs.Length - 1; y >= 0; y--)
                {
                    if (Directory.GetFileSystemEntries(dirs[y]).Length == 0)
                        Directory.Delete(dirs[y]);
                }
                //
            }
 //Работа в фоновом режиме, перемещение программы в трей
            notifyIcon1.Icon = SystemIcons.Exclamation;
            notifyIcon1.Icon = new Icon("yes.ico");
            notifyIcon1.BalloonTipTitle = "Программа завершила свою работу";
            notifyIcon1.BalloonTipText = "Вы можете перейти в указанную папку и просмотреть результат работы программы.";
            notifyIcon1.ShowBalloonTip(5000);//показывает сколько милисекунд будет спрятана программа

Подскажите пожалуйста, в чем может быть логическая ошибка или как реализовать чтобы при нажатии на кнопку после
C#
1
2
3
4
5
6
private void button3_Click_1(object sender, EventArgs e)
        {
            string filename;
           
            if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
            {
программа сворачивалась в трей, а при нажатии на иконку правой кнопкой мышки показывалось контекстное меню, и при нажатии на иконку левой кнопкой мышки программа разворачивалась. Помогите пожалуйста как можно это реализовать, а то совсем запуталась.
0
Sanya_sa
Модератор
806 / 745 / 313
Регистрация: 03.02.2015
Сообщений: 4,806
Записей в блоге: 9
Завершенные тесты: 3
17.03.2016, 22:15 4
Как я и писал используем NotifyIcon и ContexMenuStrip - прямо на фору кидаем и подписываемся на событие NotifyIcon, ContexMenuStrip - заполняем в дизайнере.

C#
1
2
3
4
5
6
7
8
9
10
 private void notifyIconTry_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == System.Windows.Forms.MouseButtons.Left)
                HideShowMainForm();
 
            if (e.Button == System.Windows.Forms.MouseButtons.Right)
            {
                contextMenuStrip1.Show(Cursor.Position);
            }
        }
0
Миниатюры
Как отобразить контекстное меню для иконки в трее?   Как отобразить контекстное меню для иконки в трее?  
17.03.2016, 22:15
VasNasSev
0 / 0 / 0
Регистрация: 09.11.2015
Сообщений: 61
18.03.2016, 17:21  [ТС] 5
что такое HideShowMainForm(); ?

Добавлено через 13 секунд
Sanya_sa, что такое HideShowMainForm(); ?

Добавлено через 1 час 29 минут
Пишу все правильно, а программа не реагирует
0
Sanya_sa
Модератор
806 / 745 / 313
Регистрация: 03.02.2015
Сообщений: 4,806
Записей в блоге: 9
Завершенные тесты: 3
20.03.2016, 10:06 6
Не знаю что там может не получится) Вот дальше сами.
0
Вложения
Тип файла: rar tray.rar (135.6 Кб, 11 просмотров)
VasNasSev
0 / 0 / 0
Регистрация: 09.11.2015
Сообщений: 61
20.03.2016, 17:10  [ТС] 7
Sanya_sa, это все получается, не получается следующее: запускаю программу, на форме находится кнопка. При нажатии на которую запускается функция сортировки файлов и программа сворачивается в трей, проблема в том что бы в этот промежуток времени, когда программа еще работает(работает функция) нажать на иконку в трее правой кнопкой мышки что бы появилось контекстное меню.
0
Sanya_sa
Модератор
806 / 745 / 313
Регистрация: 03.02.2015
Сообщений: 4,806
Записей в блоге: 9
Завершенные тесты: 3
20.03.2016, 18:07 8
Цитата Сообщение от VasNasSev Посмотреть сообщение
Sanya_sa, это все получается, не получается следующее: запускаю программу, на форме находится кнопка. При нажатии на которую запускается функция сортировки файлов и программа сворачивается в трей, проблема в том что бы в этот промежуток времени, когда программа еще работает(работает функция) нажать на иконку в трее правой кнопкой мышки что бы появилось контекстное меню.

Я не знаю что там за функция сортировки))) Она что забивает основной поток? Если да то просто выполните ее асинхронно.
0
VasNasSev
0 / 0 / 0
Регистрация: 09.11.2015
Сообщений: 61
20.03.2016, 18:22  [ТС] 9
Sanya_sa,
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
private void button3_Click_1(object sender, EventArgs e)
        {
            
            string filename;
 
            
            if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
            {
               // Работа в фоновом режиме, перемещение программы в трей
                Hide();
                notifyIcon1.Icon = new Icon("Lemon64 (1).ico");
                notifyIcon1.BalloonTipTitle = "Программа GPS_Photo_Background начала свою работу";
                notifyIcon1.BalloonTipText = "Обратите внимание что программа была спрятана и продолжит свою работув трее.";
                notifyIcon1.ShowBalloonTip(5000);//показывает сколько милисекунд будет спрятана программа
                
                //
                filename = folderBrowserDialog1.SelectedPath;//запись в переменную путь
                    textBox3.Text = filename;//вывод пути
 
                string[] PathPhoto3 = Directory.GetFiles(filename, "*.*", SearchOption.AllDirectories);
 
                //количество файлов
                int SumFiles = PathPhoto3.Length;
                    label2.Text = SumFiles.ToString();
                //
 
                //=====Запуск функции Function1===============
                    Function1(PathPhoto3, filename);
                //============================================
 
                //Удаление лишних папок
                string[] dirs = Directory.GetDirectories(filename, "*", SearchOption.AllDirectories);
 
                for (int y = dirs.Length - 1; y >= 0; y--)
                {
                    if (Directory.GetFileSystemEntries(dirs[y]).Length == 0)
                        Directory.Delete(dirs[y]);
                }
                //
            }
            string filename2 = folderBrowserDialog1.SelectedPath;
            string[] dirs2 = Directory.GetDirectories(filename2, "*", SearchOption.AllDirectories);
            int SumFiles2 = dirs2.Length;
            label6.Text = SumFiles2.ToString();
            
 
            //Работа в фоновом режиме, перемещение программы в трей
            notifyIcon1.Icon = SystemIcons.Exclamation;
            notifyIcon1.Icon = new Icon("yes.ico");
            notifyIcon1.BalloonTipTitle = "Программа GPS_Photo_Background завершила свою работу";
            notifyIcon1.BalloonTipText = "Вы можете перейти в указанную папку и просмотреть результат работы программы GPS_Photo_Background.";
            notifyIcon1.ShowBalloonTip(5000);//показывает сколько милисекунд будет спрятана программа
            }
        //Контекстное меню
        private void openToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Show();
        }
 
        private void exitToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Hide();
        }
 
        private void exitToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
 
        private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            this.Show();
            
        }
0
20.03.2016, 18:22
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.03.2016, 18:22

Как сделать одно контекстное меню для нескольких richTextBox?
На форме четыре richTextBox, для каждого из них необходимо контекстное меню со стандартными...

Контекстное меню для Грида...
Нужно ревлизовать контекстрое меню у динамичести созданного контрола - грида. Выдается ошибка:В...

Контекстное меню для PictureBox
Доброе время суток всем. У меня возник вопрос: Подскажите как контекстное меню можно добавить...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru