【问题标题】:How to run an "empty" Windows Application that only has a NotifyIcon?如何运行只有 NotifyIcon 的“空”Windows 应用程序?
【发布时间】:2010-05-07 12:51:16
【问题描述】:

我想制作一个只有 NotifyIcon 的应用程序。它根本不需要“主”表单。当我想实现这样的事情时,我只是创建一个不可见的表单并运行它,但是有没有更“优雅”的方式来做到这一点,我想知道它。

你一般是怎么做的?此应用程序不能是 Windows 服务,因为拥有 NotifyIcon 及其上下文菜单很重要(它们中的每一个都将运行不同的命令)。

谢谢

【问题讨论】:

    标签: c# .net vb.net notifyicon


    【解决方案1】:

    另一种方法是使用特殊的ApplicationContext,它只有您需要的控件:Creating a Tasktray Application.

    【讨论】:

      【解决方案2】:

      查看this blog post:

      事实证明,这太容易了,太荒谬了。您所要做的就是创建一个继承 iContainer 接口的类。创建通知图标的实例时,传递一个容器对象。

      它为您提供通知图标,但不是上下文菜单。

      【讨论】:

      • @devoured - 我不知道。我打算发布我认为您确实需要一个主表单,但决定先进行搜索 - 只是为了确定。我遇到了我链接到的帖子,它似乎回答了你的问题。我自己还没试过。
      • 另外,我不知道你可以只执行 Application.Run() 并且这会使应用程序运行一个空的消息循环。
      【解决方案3】:

      来自@ChrisF 提到的同一篇博文https://bluehouse.wordpress.com/2006/01/24/how-to-create-a-notify-icon-in-c-without-a-form/

      解决方案比这更荒谬……

      using System;
      using System.Collections.Generic;
      using System.Windows.Forms;
      
      namespace DataUploader
      {
              static class Program
          {
              [STAThread]
              static void Main()
              {
                  Application.EnableVisualStyles();
                  Application.SetCompatibleTextRenderingDefault(false);
                  NotifyIcon icn = new NotifyIcon();
                  icn.Click += new EventHandler(icn_Click);
                  icn.Visible = true;
                  icn.Icon = new System.Drawing.Icon(@”SomeIcon.ico”);
                  Application.Run();
              }
      
              static void icn_Click(object sender, EventArgs e)
              {
                  Application.Exit();
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-10
        • 1970-01-01
        • 2011-06-25
        • 2014-11-27
        相关资源
        最近更新 更多