Здравствуйте! Сегодня: Вт, 7 Сен 2010, Ваш IP: 38.107.191.118 Вход | Регистрация | Забыли пароль?
> Список форумов Kbyte.Ru - - Программирование для MS Windows
+ Добавить ответ | + Создать новую тему Страница: 1
Тема: Открытие меню в трее и панели задач. дата добавления: 10.07.2010 / 17:38
Автор темы:
spiller
тем: 11/ответов: 91/благодарностей: 0

Icq: 262121621
ответов: 91
вопросов: 11


есть Form1 для которой я добавил контрол NotifyIcon1
как сделать так, чтобы в трее по клику правой кнопки мыши открывалось меню? и в taskbar'е нужно тоже самое.

п.с. почему то при закрытии программы, иконка в трее продолжает висеть (пока не наведешь курсор мышки), это проблемы винды или в самой программе можно как-то исправить?

Спасибо за помощь!
Технологии: Visual Basic .NET


 
Ответ # 1 # дата добавления: 10.07.2010 / 18:07
Автор ответа:
Aleksey Nemiro
тем: 462/ответов: 2915/благодарностей: 39
Администратор
Эксперт

Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 2915
вопросов: 462


нужно добавить ContextMenu, в него добавить требуемые элементы меню.
Затем у NotifyIcon1 в свойстве ContextMenu поставить ссылку на это меню.
п.с. почему то при закрытии программы,
такое случается только при жесткой вырубке программы. В процессе разработки, чаще всего, при остановке программы (остановка отладки).
Если программу закрывать корректно, то иконка должна выгружаться.
--
@aleksey_nemiro

- Нашел ответ самостоятельно, расскажи всем!
- Анонимус загрузи фотку, тебя не видно!
- Незабываем нажимать на Спасибо (пометить ответ, как правильный)! ;-)
- Помни: Одна тема - один вопрос!
- Kbyte Bonus Points ($$$) за вопросы и ответы на форумах Kbyte.Ru ... (Уже выдано!)

[- Изменить подпись | Личное сообщение админу | Искать друзей | Пригласить друзей | Чииииз :-) | Web-инструменты | Слоны | Деньги -]
 
Ответ # 2 # дата добавления: 10.07.2010 / 18:24
Автор ответа:
spiller
тем: 11/ответов: 91/благодарностей: 0

Icq: 262121621
ответов: 91
вопросов: 11


такое случается только при жесткой вырубке программы. В процессе разработки, чаще всего, при остановке программы (остановка отладки).
точно :)
нужно добавить ContextMenu, в него добавить требуемые элементы меню.
Затем у NotifyIcon1 в свойстве ContextMenu поставить ссылку на это меню.
это я сделал, все отлично.
но у меня уже есть такое событие:
001:
002:
003:
004:
005:
006:
007:
    Private Sub NotifyIcon1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles NotifyIcon1.MouseClick  
        If Me.WindowState = FormWindowState.Minimized Then  
            Me.WindowState = FormWindowState.Normal  
            Me.ShowInTaskbar = True  
            NotifyIcon1.Visible = False  
        End If  
    End Sub  
поэтому контексного меню я так и не вижу :) как мне разграничить события на левую и правую кнопку мышки?
+ не понятно как добавить в taskbar данный contexmenustrip1
 
Ответ # 3 # дата добавления: 10.07.2010 / 18:40
Автор ответа:
spiller
тем: 11/ответов: 91/благодарностей: 0

Icq: 262121621
ответов: 91
вопросов: 11


с правой и левой кнопкой я разобрался так:
001:
002:
003:
004:
005:
006:
007:
008:
009:
    Private Sub NotifyIcon1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles NotifyIcon1.MouseClick  
        If e.Button = Windows.Forms.MouseButtons.Left Then  
            If Me.WindowState = FormWindowState.Minimized Then  
                Me.WindowState = FormWindowState.Normal  
                Me.ShowInTaskbar = True  
                NotifyIcon1.Visible = False  
            End If  
        End If  
    End Sub  

остается вопрос про taskbar :)
 
Ответ # 4 # дата добавления: 10.07.2010 / 19:00
Автор ответа:
spiller
тем: 11/ответов: 91/благодарностей: 0

Icq: 262121621
ответов: 91
вопросов: 11


еще один маленький и глупый вопрос :)
вот сделал чтобы программа сворачивалась в трей, сделал там меню, одна из кнопок которого "Закрыть" так вот, что я должен написать в событии чтобы у меня программа закрывалась?
я всегда думал Me.Close(), но не работает :)
 
Ответ # 5 # дата добавления: 11.07.2010 / 09:11
Автор ответа:
Aleksey Nemiro
тем: 462/ответов: 2915/благодарностей: 39
Администратор
Эксперт

Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 2915
вопросов: 462


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

Application.Exit
--
@aleksey_nemiro

- Нашел ответ самостоятельно, расскажи всем!
- Анонимус загрузи фотку, тебя не видно!
- Незабываем нажимать на Спасибо (пометить ответ, как правильный)! ;-)
- Помни: Одна тема - один вопрос!
- Kbyte Bonus Points ($$$) за вопросы и ответы на форумах Kbyte.Ru ... (Уже выдано!)

[- Изменить подпись | Личное сообщение админу | Искать друзей | Пригласить друзей | Чииииз :-) | Web-инструменты | Слоны | Деньги -]
 
Ответ # 6 # дата добавления: 11.07.2010 / 10:33
Автор ответа:
spiller
тем: 11/ответов: 91/благодарностей: 0

Icq: 262121621
ответов: 91
вопросов: 11


Это системное меню формы, с ним все непросто :-)
:) туда я пока не полезу

еще вопросик, когда я сворачиваю программу, она вроде и сворачивается, но на рабочем столе остаеться маленькое окошко этой программы, (в районе меню пуск)
если после этого я нажму "свернуть все окна", то она пропадает.
как сделать чтобы она сразу пропадала?
 
Ответ # 7 # дата добавления: 11.07.2010 / 12:15
Автор ответа:
Aleksey Nemiro
тем: 462/ответов: 2915/благодарностей: 39
Администратор
Эксперт

Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 2915
вопросов: 462


Возможно, нужно обрабатывать событие формы Resize, поставить Visible=False, когда WindowSate = Minimized.

001:
002:
003:
    If Me.WindowState = FormWindowState.Minimized Then  
      Me.Visible = False  
    End If  
--
@aleksey_nemiro

- Нашел ответ самостоятельно, расскажи всем!
- Анонимус загрузи фотку, тебя не видно!
- Незабываем нажимать на Спасибо (пометить ответ, как правильный)! ;-)
- Помни: Одна тема - один вопрос!
- Kbyte Bonus Points ($$$) за вопросы и ответы на форумах Kbyte.Ru ... (Уже выдано!)

[- Изменить подпись | Личное сообщение админу | Искать друзей | Пригласить друзей | Чииииз :-) | Web-инструменты | Слоны | Деньги -]
 
Ответ # 8 # дата добавления: 11.07.2010 / 13:32
Автор ответа:
spiller
тем: 11/ответов: 91/благодарностей: 0

Icq: 262121621
ответов: 91
вопросов: 11


странно, сделал событие Resize (пробывал также SizeChanged)
проблема так и осталась.
даже увеличилась :) теперь когда программа свернута в трей, и я щелкаю по ней ЛКМ, то программа просто пропадает из всех мест :) (остается только висеть в процессах)
 
Ответ # 9 # дата добавления: 11.07.2010 / 14:07
Автор ответа:
Aleksey Nemiro
тем: 462/ответов: 2915/благодарностей: 39
Администратор
Эксперт

Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 2915
вопросов: 462


еще вопросик, когда я сворачиваю программу, она вроде и сворачивается, но на рабочем столе остаеться маленькое окошко этой программы, (в районе меню пуск)
если после этого я нажму "свернуть все окна", то она пропадает.
скриншот в студию!
--
@aleksey_nemiro

- Нашел ответ самостоятельно, расскажи всем!
- Анонимус загрузи фотку, тебя не видно!
- Незабываем нажимать на Спасибо (пометить ответ, как правильный)! ;-)
- Помни: Одна тема - один вопрос!
- Kbyte Bonus Points ($$$) за вопросы и ответы на форумах Kbyte.Ru ... (Уже выдано!)

[- Изменить подпись | Личное сообщение админу | Искать друзей | Пригласить друзей | Чииииз :-) | Web-инструменты | Слоны | Деньги -]
 
Ответ # 10 # дата добавления: 11.07.2010 / 15:12
Автор ответа:
spiller
тем: 11/ответов: 91/благодарностей: 0

Icq: 262121621
ответов: 91
вопросов: 11


скриншот в студию!
 
Ответ # 11 # дата добавления: 11.07.2010 / 15:21
Автор ответа:
Aleksey Nemiro
тем: 462/ответов: 2915/благодарностей: 39
Администратор
Эксперт

Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 2915
вопросов: 462


Такого быть не должно.
Может у формы ShowInTaskbar = False...
--
@aleksey_nemiro

- Нашел ответ самостоятельно, расскажи всем!
- Анонимус загрузи фотку, тебя не видно!
- Незабываем нажимать на Спасибо (пометить ответ, как правильный)! ;-)
- Помни: Одна тема - один вопрос!
- Kbyte Bonus Points ($$$) за вопросы и ответы на форумах Kbyte.Ru ... (Уже выдано!)

[- Изменить подпись | Личное сообщение админу | Искать друзей | Пригласить друзей | Чииииз :-) | Web-инструменты | Слоны | Деньги -]
 
Ответ # 12 # дата добавления: 11.07.2010 / 16:08
Автор ответа:
spiller
тем: 11/ответов: 91/благодарностей: 0

Icq: 262121621
ответов: 91
вопросов: 11


да было такое в коде. сейчас убрал. (сворачивается как надо)
но теперь почему то, когда программа свернута в трей, и я щелкаю по ней ЛКМ, то программа просто пропадает из всех мест :) (остается только висеть в процессах)
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing  
        If CheckBox26.Checked AndAlso Me.WindowState = FormWindowState.Normal Then  
            e.Cancel = True  
            Me.WindowState = FormWindowState.Minimized  
            If Me.WindowState = FormWindowState.Minimized AndAlso CheckBox25.Checked Then  
                Me.Visible = False  
                NotifyIcon1.Visible = True  
            End If  
        End If  
    End Sub  
001:
002:
003:
004:
005:
006:
007:
    Private Sub NotifyIcon1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles NotifyIcon1.MouseClick  
        If Me.WindowState = FormWindowState.Minimized AndAlso e.Button = Windows.Forms.MouseButtons.Left Then  
            Me.WindowState = FormWindowState.Normal  
            Me.Visible = True  
            NotifyIcon1.Visible = False  
        End If  
    End Sub  
что не так?
 
Ответ # 13 # дата добавления: 11.07.2010 / 16:39
Автор ответа:
Aleksey Nemiro
тем: 462/ответов: 2915/благодарностей: 39
Администратор
Эксперт

Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 2915
вопросов: 462


Me.Visible = False
NotifyIcon1.Visible = True
--
@aleksey_nemiro

- Нашел ответ самостоятельно, расскажи всем!
- Анонимус загрузи фотку, тебя не видно!
- Незабываем нажимать на Спасибо (пометить ответ, как правильный)! ;-)
- Помни: Одна тема - один вопрос!
- Kbyte Bonus Points ($$$) за вопросы и ответы на форумах Kbyte.Ru ... (Уже выдано!)

[- Изменить подпись | Личное сообщение админу | Искать друзей | Пригласить друзей | Чииииз :-) | Web-инструменты | Слоны | Деньги -]
 
Ответ # 14 # дата добавления: 11.07.2010 / 16:59
Автор ответа:
spiller
тем: 11/ответов: 91/благодарностей: 0

Icq: 262121621
ответов: 91
вопросов: 11


а что в этих строчках не так?
изначально у notifyicon1.visible значение false (когда программа открыта, значек в трее мне не нужен)
затем когда я сворачиваю, мне нужно чтобы NotifyIcon1.Visible принимал значение True
потом я снова хочу развернуть программу, и чтобы значек в трее исчез.
или я что-то не так понял?
 
Ответ # 15 # дата добавления: 11.07.2010 / 17:02
Автор ответа:
spiller
тем: 11/ответов: 91/благодарностей: 0

Icq: 262121621
ответов: 91
вопросов: 11


все сделал :)
001:
002:
003:
004:
005:
006:
007:
    Private Sub NotifyIcon1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles NotifyIcon1.MouseClick  
        If Me.WindowState = FormWindowState.Minimized AndAlso e.Button = Windows.Forms.MouseButtons.Left Then  
            Me.Visible = True  
            Me.WindowState = FormWindowState.Normal  
            NotifyIcon1.Visible = False  
        End If  
    End Sub  
поменял местами Me.Visible = True и Me.WindowState = FormWindowState.Normal
 
Реклама  
Страница: 1 + Добавить ответ | + Создать новую тему