Значок панели задач WinForms - событие клика не запускается - PullRequest
0 голосов
/ 07 апреля 2010

Я создал не-форму c # программу, которая использует класс NotifyIcon.

Текст "(Нажмите, чтобы активировать)" отображается при наведении курсорамышь.Итак, я обрабатываю некоторые события.

Однако событие «Click» не запускается и контекстное меню не отображается.

public class CTNotify
{
    static NotifyIcon CTicon = new NotifyIcon();
    static ContextMenu contextMenu = new ContextMenu();

    static void Main()
    {
        //Add a notify Icon
        CTicon.Icon = new Icon("CTicon.ico");
        CTicon.Text = "(Click to Activate)";
        CTicon.Visible = true;
        CTicon.Click += new System.EventHandler(CTicon_Click);

        //Create a context menu for the notify icon
        contextMenu.MenuItems.Add("E&xit");

        //Attach context menu to icon
        CTicon.ContextMenu = contextMenu;

        while (true) //Infinite Loop
        {
            Thread.Sleep(300); //wait 
        }
    }

    private static void CTicon_Click(object sender, System.EventArgs e)
    {
        MessageBox.Show("Clicked!");
    }
 }

Ответы [ 3 ]

2 голосов
/ 08 апреля 2010

Взгляните на API-метод Shell_NotifyIcon () , который реализует NotifyIcon. Перейдите к структуре NOTIFYICONDATA. Второй член этой структуры - дескриптор окна:

Дескриптор окна, которое получает уведомления, связанные со значком в области уведомлений

У вас нет окна и, следовательно, вы не можете получать уведомления. Вы должны поместить NotifyIcon в форму. И используйте Application.Run () для получения уведомлений и активации обработчиков событий.

Сохраните вашу форму скрытой, вставив этот код:

    protected override void SetVisibleCore(bool value) {
        if (!this.IsHandleCreated) {
            this.CreateHandle();
            value = false;
        }
        base.SetVisibleCore(value);
    }
2 голосов
/ 07 апреля 2010

Почему бы вам не создать приложение формы , а при инициализации просто скрыть форму? У меня никогда не было проблем со значком уведомления при использовании этого подхода

0 голосов
/ 03 февраля 2014

У меня та же проблема, когда я использую событие .hide (), чтобы скрыть форму или SetVisibleCore, которые предоставляет Ганс, события щелчка или мыши не запускаются.

У кого-нибудь есть другое решение?

P.S. Пока форма видна, все работает нормально.

...