Скрыть фиктивный значок панели задач для контекстного меню значка уведомления

#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. Это ничего не меняет, так как форма уже невидима.