我需要做什么才能使Windows窗体应用程序能够在系统托盘中运行?

不是一个可以最小化到托盘的应用程序,而是一个只存在于托盘中的应用程序

一个图标 一个工具提示,和 一个“右键”菜单。


当前回答

您可以创建表单,修改它,然后将它传递给应用程序。作为参数运行。:

    internal static class Program
    {
        /// <summary>
        ///  The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            ApplicationConfiguration.Initialize();
            var form = new Form1();
            form.Hide();
            form.Opacity = 0;
            form.ShowInTaskbar = false;
            Application.Run(form);
        }
    }

添加你的通知图标和上下文菜单(如果需要)到你的表单在设计时作为一个常规的应用程序。确保你的通知图标是可见的,并有一个相关的图标。这还将允许您使用以后可能出于任何原因需要的表单

其他回答

简单的添加

this.WindowState = FormWindowState.Minimized;
this.ShowInTaskbar = false;

到你的表单对象。 你只会在系统托盘上看到一个图标。

在。net 6中,我必须像这样工作我的类的核心:

private NotifyIcon trayIcon;
private ContextMenuStrip contextMenu1;
private ToolStripMenuItem menuItem1;

public MyCustomApplicationContext()
{
    contextMenu1 = new System.Windows.Forms.ContextMenuStrip();
    menuItem1 = new System.Windows.Forms.ToolStripMenuItem();
    this.menuItem1.Text = "E&xit";
    this.menuItem1.Click += new System.EventHandler(Exit);
    this.contextMenu1.Items.AddRange(
            new System.Windows.Forms.ToolStripMenuItem[] {this.menuItem1 });
    trayIcon = new NotifyIcon(){Icon = Resources.AppIcon, ContextMenuStrip = this.contextMenu1, Visible = true };            

}

这是一个非常友好的框架通知区域应用程序…将NotificationIcon添加到基本表单并将自动生成的代码更改为下面的代码就足够了:

public partial class Form1 : Form
{
    private bool hidden = false;

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        this.ShowInTaskbar = false;
        //this.WindowState = FormWindowState.Minimized;
        this.Hide();
        hidden = true;
    }

    private void notifyIcon1_Click(object sender, EventArgs e)
    {
        if (hidden) // this.WindowState == FormWindowState.Minimized)
        {
            // this.WindowState = FormWindowState.Normal;
            this.Show();
            hidden = false;
        }
        else
        {
            // this.WindowState = FormWindowState.Minimized;
            this.Hide();
            hidden = true;
        }
    }
}

据我所知,您仍然必须使用表单编写应用程序,但在表单上没有控件,并且永远不会将其设置为可见。使用NotifyIcon(可以在这里找到它的MSDN示例)来编写应用程序。

下面是我如何用Visual Studio 2010, .NET 4做到的

Create a Windows Forms Application, set 'Make single instance application' in properties Add a ContextMenuStrip Add some entries to the context menu strip, double click on them to get the handlers, for example, 'exit' (double click) -> handler -> me.Close() Add a NotifyIcon, in the designer set contextMenuStrip to the one you just created, pick an icon (you can find some in the VisualStudio folder under 'common7...') Set properties for the form in the designer: FormBorderStyle:none, ShowIcon:false, ShowInTaskbar:false, Opacity:0%, WindowState:Minimized Add Me.Visible=false at the end of Form1_Load, this will hide the icon when using Ctrl + Tab Run and adjust as needed.