#c# #notifyicon #contextmenustrip
Вопрос:
У меня есть простая форма WinForm .Net 5.0, которая автоматически скрывается после запуска приложения:
private void form_Shown (object sender, EventArgs e) { Hide (); }
Он создает только значок уведомления. Этот значок уведомления имеет полосу контекстного меню, которая отображается при щелчке левой кнопкой мыши:
private void notifyIcon_Click (object sender, EventArgs e) { contextMenuStrip.Show (MousePosition); }
Это работает нормально, но пока видна полоса контекстного меню, появляется фиктивный значок панели задач:
Этого не происходит, если форма не скрыта или полоска контекстного меню отображается щелчком правой кнопки мыши (через свойство ContextMenuStrip).
Как я могу предотвратить появление этого значка?
Комментарии:
1. Вы говорите о
ShowInTaskbar
собственности?2. Вовсе нет (и изменение этого значения на false не решило проблему).
3. Не используйте форму. Разместите свой NotifyIcon в производном классе ApplicationContext и запустите его в Application.Run() вместо формы в program.cs.
Ответ №1:
Я наконец-то сам нашел решение:
[DllImport ("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)] private static extern bool SetForegroundWindow (HandleRef hWnd); private void notifyIcon_Click (object sender, EventArgs e) { SetForegroundWindow (new HandleRef (notifyIcon.ContextMenuStrip, notifyIcon.ContextMenuStrip.Handle)); notifyIcon.ContextMenuStrip.Show (MousePosition); }
Ответ №2:
Попробуй Меня.Спрячься()
давайте посмотрим на результат
Попробуйте назначить контекстное меню свойству notifyicon s .ContextMenu property like and use the notifyicon
s .Visible, чтобы отобразить его вместо использования .Показать метод.
Комментарии:
1. Это ничего не меняет, так как форма уже невидима.