簡體   English   中英

右鍵單擊系統任務欄中的notifyicon不會顯示上下文菜單

[英]Right clicking notifyicon in system tray does not show contextmenu

我正在嘗試使用帶有notifyicon的contextmenustrip。 當我右鍵單擊notifyicon時,contextmenustrip不會顯示。 我尚未在網絡上找到任何解決方案。 這是我的代碼:

public class Program
{
    static ContextMenuStrip contextMenuStrip1;
    static ToolStripMenuItem exitToolStripMenuItem;
    static ToolStripMenuItem restoreToolStripMenuItem;
    static IContainer components;
    static NotifyIcon notifyIcon1;
    static win window = new win();
    [STAThread]
    static void Main(string[] args)
    {
        Application.EnableVisualStyles();
        Intialise();
        Application.Run();
    }
    static void Intialise()
    {
        components = new Container();
        contextMenuStrip1 = new ContextMenuStrip(components);
        restoreToolStripMenuItem = new ToolStripMenuItem();
        exitToolStripMenuItem = new ToolStripMenuItem();
        notifyIcon1 = new NotifyIcon(components);
        contextMenuStrip1.SuspendLayout();
        // 
        // restoreToolStripMenuItem
        // 
        restoreToolStripMenuItem.Name = "restoreToolStripMenuItem";
        restoreToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
        restoreToolStripMenuItem.Text = "Restore";
        restoreToolStripMenuItem.Click += new EventHandler(RestoreToolStripMenuItem_Click);
        // 
        // exitToolStripMenuItem
        // 
        exitToolStripMenuItem.Name = "exitToolStripMenuItem";
        exitToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
        exitToolStripMenuItem.Text = "Exit";
        exitToolStripMenuItem.Click += new EventHandler(ExitToolStripMenuItem_Click);
        // 
        // contextMenuStrip1
        // 
        contextMenuStrip1.Items.AddRange(new ToolStripItem[] {
        restoreToolStripMenuItem,
         exitToolStripMenuItem});
        contextMenuStrip1.Name = "contextMenuStrip1";
        contextMenuStrip1.RenderMode = ToolStripRenderMode.System;
        contextMenuStrip1.Size = new System.Drawing.Size(153, 70);
        contextMenuStrip1.Text = "File";
        // 
        // notifyIcon1
        // 
        notifyIcon1.ContextMenuStrip = contextMenuStrip1;
        notifyIcon1.Icon = Properties.Resources.stm2;
        notifyIcon1.Text = "Screen Time Monitor";
        notifyIcon1.Visible = true;
        notifyIcon1.MouseUp += new MouseEventHandler(NotifyIcon1_MouseUp);
        notifyIcon1.MouseDoubleClick += new MouseEventHandler(NotifyIcon1_MouseDoubleClick);
    }
    private static void NotifyIcon1_MouseUp(object sender, MouseEventArgs e)
    {
            if (e.Button == MouseButtons.Left)
        {
            MethodInfo mi = typeof(NotifyIcon).GetMethod("ShowContextMenu", BindingFlags.Instance | BindingFlags.NonPublic);
            mi.Invoke(notifyIcon1, null);
        }
        else if(e.Button == MouseButtons.Right)
        {
            MethodInfo mi = typeof(NotifyIcon).GetMethod("ShowContextMenu", BindingFlags.Instance | BindingFlags.NonPublic);
            mi.Invoke(notifyIcon1, null);
        }
    }
}

我嘗試使用mouseUp事件打開contextmenu,但是contextmenu均未顯示。 我已經看到人們在其中編寫notifyIcon1.ContextMenuStrip = contextMenuStrip1;代碼notifyIcon1.ContextMenuStrip = contextMenuStrip1; 那行得通。 雖然它對我不起作用。 謝謝。

該行contextMenuStrip1.SuspendLayout(); 停止顯示contextmenustrip。 我已經從生成的Windows表單中復制了代碼,所以我不知道為什么那行代碼在那里。

暫無
暫無

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

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