繁体   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