Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在启动时不显示窗口?_C#_.net_Winforms_C# 4.0_Systray - Fatal编程技术网

C# 如何在启动时不显示窗口?

C# 如何在启动时不显示窗口?,c#,.net,winforms,c#-4.0,systray,C#,.net,Winforms,C# 4.0,Systray,可能重复: 我的应用程序有一个系统托盘,我不希望窗口在启动时出现 我怎样才能做到这一点 这是默认的Windows窗体应用程序 我拖过一个notifyIcon和一个contexualMenuStrip 当表单关闭时,应用程序退出(也不希望这样)。但当应用程序启动时,Windows窗体也会显示出来。那么,如何在启动时不启动表单(并在关闭窗口时不退出)?基本上,您需要覆盖SetVisibleCore()以实现这一点。。。另一个选项是将ShowInTaskbar设置为false,并在Applicat

可能重复:

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

我怎样才能做到这一点


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

我拖过一个notifyIcon和一个contexualMenuStrip


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

基本上,您需要覆盖
SetVisibleCore()
以实现这一点。。。另一个选项是将
ShowInTaskbar
设置为
false
,并在
Application.Run中使用
ApplicationContext

一些参考链接和示例代码:


    • 答案不是隐藏主窗体,而是首先不显示/加载它

      一种方法是创建自定义的
      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; }
      }
      

      然后,您可以在
      应用程序之前将处理程序附加到通知图标。运行(上下文)
      行以允许打开主窗体、显示菜单等操作,…

      请显示一些源代码。。。你试过什么?什么不起作用?您不能将启动表单的
      可见属性设置为
      false
      ?或者将默认窗口位置设置为隐藏?我记得我做过类似的事情,但有一段时间没有接触过WinForms。表单没有可见属性。这种方法的一个副作用是没有触发初始化代码。例如:如果我有一个在MainForm_Load中启动的计时器,它永远不会被启用,也永远不会触发Tick事件。我甚至尝试过System.Timers.Timer,只是为了确保不仅仅是Windows.Forms.Timer以这种方式运行,而且结果是相同的。