【发布时间】:2010-05-07 12:51:16
【问题描述】:
我想制作一个只有 NotifyIcon 的应用程序。它根本不需要“主”表单。当我想实现这样的事情时,我只是创建一个不可见的表单并运行它,但是有没有更“优雅”的方式来做到这一点,我想知道它。
你一般是怎么做的?此应用程序不能是 Windows 服务,因为拥有 NotifyIcon 及其上下文菜单很重要(它们中的每一个都将运行不同的命令)。
谢谢
【问题讨论】:
标签: c# .net vb.net notifyicon
我想制作一个只有 NotifyIcon 的应用程序。它根本不需要“主”表单。当我想实现这样的事情时,我只是创建一个不可见的表单并运行它,但是有没有更“优雅”的方式来做到这一点,我想知道它。
你一般是怎么做的?此应用程序不能是 Windows 服务,因为拥有 NotifyIcon 及其上下文菜单很重要(它们中的每一个都将运行不同的命令)。
谢谢
【问题讨论】:
标签: c# .net vb.net notifyicon
另一种方法是使用特殊的ApplicationContext,它只有您需要的控件:Creating a Tasktray Application.
【讨论】:
事实证明,这太容易了,太荒谬了。您所要做的就是创建一个继承 iContainer 接口的类。创建通知图标的实例时,传递一个容器对象。
它为您提供通知图标,但不是上下文菜单。
【讨论】:
来自@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();
}
}
}
【讨论】: