在控制台应用程序中有一个系统托盘,在 C# 中有一个菜单

Having a System tray in a Console Application with a menu in C#

我搜索了这个网站和许多其他资源,试图找到它。

我有一个控制台应用程序,我正在尝试为其添加系统托盘图标。

那部分有效。

我无法真正开始工作的是当我右键单击时向它添加一个菜单。我真的只需要一个可以关闭它的退出按钮。

我的整个 class 很小,所以我会把它包括在内。我已经在我的 main 方法中初始化了这个对象,这几乎是我所需要的,因为我是从构造函数中驱动它的。我找到了表明我不需要点击事件的资源,但我都试过了,所以我不太确定。

我已经尝试从其他资源中将其拼凑在一起,但每个人的问题似乎都略有不同,或者我遗漏了一些东西。

感谢观看。

namespace PvsMessageLogger
{
  public class SystemTray
  {
    private readonly string _systemDisplayName;
    private readonly NotifyIcon _systemTray;
    public SystemTray(string systemDisplayName)
    {
      _systemTray = new NotifyIcon();
      _systemDisplayName = systemDisplayName;
      InitializeSystemTray();
    }

    private void InitializeSystemTray()
    {
      _systemTray.Icon = new Icon(SystemIcons.Application, 40, 40);
      _systemTray.Visible = true;
      _systemTray.BalloonTipTitle = _systemDisplayName;
      _systemTray.BalloonTipText = _systemDisplayName + " is running in the background";
      MenuItem[] menuList = {new MenuItem("Exit", (s, e) => Application.Exit()) };

      ContextMenu clickMenu = new ContextMenu(menuList);
      _systemTray.ContextMenu = clickMenu;
      _systemTray.ShowBalloonTip(1000);
    }
  }
}

刚刚在另一个帖子中找到了答案,您必须在创建图标后添加Application.Run()。

您可以在 Roman 的 answer 上找到更多详细信息。