在 WinForm 程序启动时,不显示主窗体的实现方法主要有以下5种,第五种最简单,而且效果也不错,第四种方法也值得推荐。

  实例代码如下:

//隐藏窗体的方法1/5:不指定任何窗体为主窗体
//注意:通常,在一个程序中,关闭主窗体,就可以关闭应用程序。
//但是在没有主窗体中,不行。
//只能使用Application.Exit()才能关闭应用程序。
//using可以保证Application结束前,关闭MyMainForm
using (new Form1())
{
  Application.Run();
};
//Application.Run(new Form1()); //隐藏窗体的方法2/5:
//通过close()关闭主窗口同时可以关闭应用程序
protected override CreateParams CreateParams
{
  get
  {
    Hide();
    return base.CreateParams;
  }
} //隐藏窗体的方法3/5:
//这种方法仍然不能用Close主窗口的方式来关闭应用程序, 还得使用Application.Exit。
protected override void SetVisibleCore( bool value)
{
  base.SetVisibleCore(false);
}
//注意:方法2和3 使用Show好像没办法调出主窗口,比较郁闷。 //隐藏窗体的方法4/5 part1/2: 推荐使用!!!
//ApplicationContext实质上就是一个Application与主窗体之间的连接器,
//掌管着二者之间的互动关系。其中最主要的,就是负责在主窗体
//关闭时结束线程。既然如此,我们只要根据需要自定义一个ApplicationContext就可以了
internal class HideOnStartupApplicationContext : ApplicationContext
{
  private Form mainFormInternal; // 构造函数,主窗体被存储在mainFormInternal
  public HideOnStartupApplicationContext( Form mainForm)
  {
    this.mainFormInternal = mainForm;
    this.mainFormInternal.Closed += new EventHandler(mainFormInternal_Closed);
  } // 当主窗体被关闭时,退出应用程序
  void mainFormInternal_Closed(object sender, EventArgs e )
  {
    Application.Exit();
  }
}
//在Main中作如下修改:
HideOnStartupApplicationContext context = new HideOnStartupApplicationContext( new Form1());
Application.Run(context ); //隐藏窗体的方法5/5: 推荐使用!!!
//在构造函数中或者直接设置form属性
this.ShowInTaskbar = false;
this.WindowState = FormWindowState.Minimized;

  程序中配合 notifyIcon 控件一起使用,实现程序最小化到托盘,效果很好!

WinForm 之 程序启动不显示主窗体的更多相关文章

  1. Delphi - 程序运行时不显示主窗体

    // 不显示主窗体 Application.ShowMainForm := False;

  2. C# 关闭登录窗体,显示主窗体

    首先在programm.cs里设置登录窗体显示 static class Program    {        /// <summary>        /// The main ent ...

  3. 游戏服java程序启动,显示内存溢出

    1.OutOfMemoryError:Java heap space 过程:服务器上面的mysql突然异常重启,导致了程序启动的时候报错 问题1:OutOfMemoryError:Java heap ...

  4. PyQt5学习笔记-从主窗体打开一个子窗体

    PyQt5学习笔记-从主窗体打开一个子窗体 软件环境: Eric6+Python3.5+PyQt5 试验目标: 1.点击菜单项Open,打开一个子窗体 2.点击按钮Open,打开一个子窗体 主窗体设计 ...

  5. C#WinForm窗体内Panel容器中嵌入子窗体、程序主窗体设计例子

    C#WinForm父级窗体内Panel容器中嵌入子窗体.程序主窗体设计例子 在项目开发中经常遇到父级窗体嵌入子窗体所以写了一个例子程序,顺便大概划分了下界面模块和配色,不足之处还望指点 主窗体窗体采用 ...

  6. CS DevExpress程序启动(主窗体初始化优化)

    在进入程序主界面时,某些情况下主界面的初始化会消耗很长时间,例如一些复杂的业务系统,可能会从服务器上下载最新的数据进行展示等等,在这种情况下,我们可以采用一个进度界面展示“系统正在加载...”,等主界 ...

  7. windows程序里新窗体不在任务栏显示,无标题拖动,键盘事件,始终显示在主窗体上面,单实例运行等

    不显示在任务栏,Alt+Tab也不显示 protected override CreateParams CreateParams { get { const int WS_EX_APPWINDOW = ...

  8. WinForm开发,窗体显示和窗体传值相关知识总结

    主窗体中代码: public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void b ...

  9. winform程序登陆后关闭登录窗体

    用winform做程序的时候,我们一般都是在Program先启动登录窗体,然后登录成功后才创建主窗体,结果这就导致了登录窗体无法关闭 所以如果我们不在Program的程序入口先创建登录窗体的话就能完美 ...

随机推荐

  1. javascript中的回调函数(callback)

    代码如下: app.use(function(req, res, next) {     var err = new Error('Not Found');     err.status = 404; ...

  2. SMTP协议及POP3协议-邮件发送和接收原理(转)

    本文转自https://blog.csdn.net/qq_15646957/article/details/52544099 感谢作者 一. 邮件开发涉及到的一些基本概念 1.1.邮件服务器和电子邮箱 ...

  3. 咏南Mormot中间件接口

    咏南Mormot中间件接口 只使用了MORMOT的HTTPS.SYS作为通讯,数据引擎使用FIREDAC,数据序列/还原是自行封装. 客户端支持FDMemeTable和ClientDataSet数据集 ...

  4. ECShop 调用自定义广告

    原文地址:http://www.ecshoptemplate.com/article-1348.html ECShop中关于广告的调用方法,网上有很多,现在要介绍的不同于其他,根据实际情况选择使用,以 ...

  5. CSS:如何学习 CSS?

    马上该转战互联网领域了,在此总结一下 CSS 学习的思路. 理解 CSS 的基本语法. 理解盒子模型. 理解文档流和定位. 理解浮动和清除. 理解各种 CSS 样式. 目前发现的最好的资源是:http ...

  6. poj Kaka&#39;s Matrix Travels

    Kaka's Matrix Travels 题目: 给出一个矩阵.求仅仅能向下或者向右的情况下能得到的最大和.一般的是指遍历一次,而这个是能够反复走K次.每经过一次后就把该点设为0.求最大和. 算法: ...

  7. Python 标准库一览(Python进阶学习)

    转自:http://blog.csdn.net/jurbo/article/details/52334345 写这个的起因是,还是因为在做Python challenge的时候,有的时候想解决问题,连 ...

  8. Java文件管理系统

    上一个版本设计参照了 windows 资源管理器的原则,使用了多年.也发现了少许问题,也许是我们应用场景不一样... 目前的设计结合了目前的云概念.目录采用的是虚拟方式和实际的目录无关,只是存在一定的 ...

  9. [转]Hive安装及使用攻略

    转 : http://blog.fens.me/hadoop-hive-intro/

  10. [转]如何将PHP作为Shell脚本语言使用

    From : http://www.linuxfly.org/post/559/ 我们都知道,PHP是一种非常好的动态网页开发语言(速度飞快,开发周期短……).但是只有很少数的人意识到PHP也可以很好 ...