Странное поведение контекстного меню

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

viter.alex
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 221
Зарегистрирован: 27.07.2008 (Вс) 20:17
Откуда: Montreal

Странное поведение контекстного меню

Сообщение viter.alex » 09.10.2009 (Пт) 14:00

Повесил я контекстное меню на клик левой клавишей по иконке в трее:
Код: Выделить всё
  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 _
      ctxtmnNotify.Show(System.Windows.Forms.Cursor.Position, ToolStripDropDownDirection.AboveLeft)
  End Sub

Для формы поставил свернутое состояние и не отображать в панели задач.
Первый клик проходит нормально, а потом вместе меню в панели задач появляется окно (обведено красным):
Изображение
Что это такое? Откуда берется?
Лучше день потерять — потом за пять минут долететь!

viter.alex
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 221
Зарегистрирован: 27.07.2008 (Вс) 20:17
Откуда: Montreal

Re: Странное поведение контекстного меню

Сообщение viter.alex » 09.10.2009 (Пт) 14:05

Только что задал свойство Text для контекстного меню, и этот текст появился на кнопке в панели задач. Т.е. это окно контекстного меню, но зачем его показывать на панели задач? А свойства ShowInTaskbar у него нет :(
Лучше день потерять — потом за пять минут долететь!

1Steps
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 505
Зарегистрирован: 20.12.2006 (Ср) 0:50
Откуда: New York

Re: Странное поведение контекстного меню

Сообщение 1Steps » 10.10.2009 (Сб) 4:35

Код: Выделить всё
notifyIcon1.ContextMenu = Me.contextMenu1
Не о чем не говорит?
Удалена за ненадобностью.

viter.alex
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 221
Зарегистрирован: 27.07.2008 (Вс) 20:17
Откуда: Montreal

Re: Странное поведение контекстного меню

Сообщение viter.alex » 10.10.2009 (Сб) 12:52

Ни о чем не говорит. Я специально убрал контекстное меню с иконки, чтобы вызывать его только левой кнопкой. У программы не предполагается наличие окна: работать нужно с чужой программой, поэтому я посчитал целесообразным действовать через NotifyIcon. А чтобы было удобнее, все действия с иконкой делать левой кнопкой мыши.
Лучше день потерять — потом за пять минут долететь!

1Steps
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 505
Зарегистрирован: 20.12.2006 (Ср) 0:50
Откуда: New York

Re: Странное поведение контекстного меню

Сообщение 1Steps » 11.10.2009 (Вс) 4:03

Попробуй так
Код: Выделить всё
Imports System.Reflection

....................

    Private Sub NotifyIcon1_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles NotifyIcon1.MouseUp
        If e.Button = MouseButtons.Left Then
            Dim mi As MethodInfo = GetType(NotifyIcon).GetMethod("ShowContextMenu", BindingFlags.Instance Or BindingFlags.NonPublic)
            mi.Invoke(notifyIcon1, Nothing)
        End If
    End Sub
Удалена за ненадобностью.

1Steps
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 505
Зарегистрирован: 20.12.2006 (Ср) 0:50
Откуда: New York

Re: Странное поведение контекстного меню

Сообщение 1Steps » 11.10.2009 (Вс) 4:07

Только не забудь
Код: Выделить всё
notifyIcon1.ContextMenu = Me.contextMenu1


У меня работает и по левой и по правой кнопке.
Удалена за ненадобностью.


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 26

    TopList