【问题标题】:How do I not have a Window displayed on launch? [duplicate]如何在启动时不显示窗口? [复制]
【发布时间】:2012-02-09 17:08:34
【问题描述】:

可能重复:
How to make the startup form initially invisible or hidden

我的应用程序有一个系统托盘,我不希望窗口在启动时出现。

我怎样才能做到这一点?


这是默认的 Windows 窗体应用程序。

我拖过一个 notifyIcon 和一个 contexualMenuStrip

当表单关闭时,应用程序退出(也不希望这样)。但是当应用程序启动时,Windows 窗体也可见。那么如何在启动时不启动表单(并且在关闭窗口时不退出)?

【问题讨论】:

  • 请展示一些源代码...你试过什么?什么不工作?
  • 不能把启动窗体的Visible属性设置为false吗?还是将默认窗口位置设置为隐藏?我记得做过类似的事情,但有一段时间没有接触过 WinForms。
  • Form 没有 Visible 属性。

标签: c# .net winforms c#-4.0 systray


【解决方案1】:

【讨论】:

  • 这种方法的一个副作用是不会触发初始化代码。例如:如果我有一个在 MainForm_Load 中启动的计时器,它永远不会启用并且永远不会触发 Tick 事件。我什至尝试了 System.Timers.Timer 只是为了确保它不仅仅是 Windows.Forms.Timer 以这种方式运行,而且结果是相同的。
【解决方案2】:

答案不是隐藏您的主表单,而是首先不显示/加载它

一种方法是创建自定义ApplicationContext

public static class Program
{
    public static void Main(string[] arguments)
    {
        var context = new NotifyIconApplicationContext();
        context.Icon.Icon = new Icon(PATH_TO_ICON_FILE_HERE);
        context.Icon.Visible = true;    
        Application.Run(context);
    }
}

class NotifyIconApplicationContext : ApplicationContext
{
    public NotifyIconApplicationContext()
    {
        Icon = new NotifyIcon();
    }
    public NotifyIcon Icon { get; set; }
}

然后,您可以在Application.Run(context) 行之前将处理程序附加到通知图标,以允许打开主表单、显示菜单等操作......

【讨论】:

    猜你喜欢
    • 2019-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-28
    • 2016-10-10
    • 1970-01-01
    相关资源
    最近更新 更多