簡體   English   中英

WinForms任務欄圖標-單擊事件未觸發

[英]WinForms Taskbar Icon - Click Event not firing

我創建了一個使用NotifyIcon類的非形式 c#程序。

當我將鼠標懸停時,將顯示文本“(單擊以激活)”。 所以我正在處理一些事件。

但是,不會觸發“點擊”事件,並且不會顯示“上下文”菜單。

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!");
    }
 }

為什么不創建表單應用程序,而在初始化時僅隱藏表單? 我從來沒有遇到過使用這種方法的通知圖標的問題

看一下Shell_NotifyIcon() API方法,該方法實現了NotifyIcon。 單擊進入NOTIFYICONDATA結構。 該結構的第二個成員是窗口句柄:

窗口的句柄,用於接收與通知區域中的圖標相關的通知

您沒有窗口,因此無法接收通知。 必須將NotifyIcon放在表單上。 並使用Application.Run()獲取通知並激活事件處理程序。

通過粘貼以下代碼來隱藏表單:

    protected override void SetVisibleCore(bool value) {
        if (!this.IsHandleCreated) {
            this.CreateHandle();
            value = false;
        }
        base.SetVisibleCore(value);
    }

我有一個同樣的問題,當我使用.hide()事件隱藏Hans提供的表單或SetVisibleCore時,單擊或任何鼠標事件都不會觸發。

有人還有其他解決方案嗎?

PS當表格可見時,一切正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM