在启动时将程序放入系统托盘中

tho*_*asb 16 .net c# vb.net

我按照常用链接提示将应用程序减少到系统托盘:http://www.developer.com/net/csharp/article.php/3336751现在它可以工作,但仍然存在问题:我的应用程序已显示什么时候开始; 我希望它直接在系统托盘中启动.我试图在Load事件中最小化并隐藏它,但它什么也没做.

编辑:我可以,如海报建议,修改快捷方式属性,但我宁愿使用代码:我没有完全控制安装软件的每台计算机.

我不想从除了systray之外的任何地方完全删除它,我只想让它最小化.

有任何想法吗 ?

谢谢

小智 26

在你的主程序中,你可能有一行表格:

Application.Run(new Form1());
Run Code Online (Sandbox Code Playgroud)

这将强制显示表单.您需要创建表单,但不要将其传递给Application.Run:

Form1 form = new Form1();
Application.Run();
Run Code Online (Sandbox Code Playgroud)

请注意,在您致电之前,该程序现在不会终止Application.ExitThread().最好从FormClosed事件的处理程序执行此操作.

private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
    Application.ExitThread();
}
Run Code Online (Sandbox Code Playgroud)


lub*_*sko 13

这就是你如何做到的

static class Program
{
    [STAThread]
    static void Main()
    {
        NotifyIcon icon = new NotifyIcon();
        icon.Icon = System.Drawing.SystemIcons.Application;
        icon.Click += delegate { MessageBox.Show("Bye!"); icon.Visible = false; Application.Exit(); };
        icon.Visible = true;
        Application.Run();
    }
}
Run Code Online (Sandbox Code Playgroud)