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

  实例代码如下:

  1. //隐藏窗体的方法1/5:不指定任何窗体为主窗体
  2. //注意:通常,在一个程序中,关闭主窗体,就可以关闭应用程序。
  3. //但是在没有主窗体中,不行。
  4. //只能使用Application.Exit()才能关闭应用程序。
  5. //using可以保证Application结束前,关闭MyMainForm
  6. using (new Form1())
  7. {
  8.   Application.Run();
  9. };
  10. //Application.Run(new Form1());
  11.  
  12. //隐藏窗体的方法2/5:
  13. //通过close()关闭主窗口同时可以关闭应用程序
  14. protected override CreateParams CreateParams
  15. {
  16.   get
  17.   {
  18.     Hide();
  19.     return base.CreateParams;
  20.   }
  21. }
  22.  
  23. //隐藏窗体的方法3/5:
  24. //这种方法仍然不能用Close主窗口的方式来关闭应用程序, 还得使用Application.Exit。
  25. protected override void SetVisibleCore( bool value)
  26. {
  27.   base.SetVisibleCore(false);
  28. }
    //注意:方法2和3 使用Show好像没办法调出主窗口,比较郁闷。
  29.  
  30. //隐藏窗体的方法4/5 part1/2: 推荐使用!!!
    //ApplicationContext实质上就是一个Application与主窗体之间的连接器,
  31. //掌管着二者之间的互动关系。其中最主要的,就是负责在主窗体
  32. //关闭时结束线程。既然如此,我们只要根据需要自定义一个ApplicationContext就可以了
  33. internal class HideOnStartupApplicationContext : ApplicationContext
  34. {
  35.   private Form mainFormInternal; // 构造函数,主窗体被存储在mainFormInternal
  36.   public HideOnStartupApplicationContext( Form mainForm)
  37.   {
  38.     this.mainFormInternal = mainForm;
        this.mainFormInternal.Closed += new EventHandler(mainFormInternal_Closed);
  39.   }
  40.  
  41. // 当主窗体被关闭时,退出应用程序
  42.   void mainFormInternal_Closed(object sender, EventArgs e )
  43.   {
  44.     Application.Exit();
  45.   }
  46. }
  47. //在Main中作如下修改:
  48. HideOnStartupApplicationContext context = new HideOnStartupApplicationContext( new Form1());
  49. Application.Run(context );
  50.  
  51. //隐藏窗体的方法5/5: 推荐使用!!!
  52. //在构造函数中或者直接设置form属性
  53. this.ShowInTaskbar = false;
  54. 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. springboot static方法与构造方法加载@VALUE

    application.properties文件 mongodb.host=host111 mongodb.port=port222 import org.springframework.beans. ...

  2. 图解openssl实现私有CA

    原文地址:http://xxrenzhe.blog.51cto.com/4036116/1370114 废话不多说,先上图 说明1:蓝色部分为主要流程,黄色箭头指向具体的操作步骤 什么是openssl ...

  3. AIDL interface XXX should be declared in a file

    在写AIDL的时候出现了interface XXX should be declared in a file, 错误...经过反复查看,发现AIDL规定,文件名必须和interface XXX名字相同 ...

  4. CCBAnimationManager

    #ifndef __CCB_CCBANIMATION_MANAGER_H__ #define __CCB_CCBANIMATION_MANAGER_H__ #include "cocos2d ...

  5. 设计原则:多使用Specialized Types

    使用Specialized Types的好处: 可以服用:验证.计算. 更高的编程层次. 容易在UI层封装组件.

  6. 使用系统自带的 UIRefreshControl 实现下拉刷新

    UIRefreshControl 为 UITableViewController 中的一个属性,从以下可以看出, IOS6.0 以上才支持. @property (nonatomic,retain) ...

  7. Android 类加载原理 和热修复——深入浅出原理与实现

    一.简述 热修复无疑是这2年较火的新技术,是作为安卓工程师必学的技能之一.在热修复出现之前,一个已经上线的app中如果出现了bug,即使是一个非常小的bug,不及时更新的话有可能存在风险,若要及时更新 ...

  8. Java反编译工具Jad详解

    做项目过程中需要反编译一个jar包,于是作了一些学习,记录下来. Jad(JAva Decompiler)是一个Java的反编译器,可以通过命令行把Java的class文件反编译成源代码. 如果你在使 ...

  9. SecureCRT SSH 语法高亮

    主要原因 1.term类型不对,不支持彩色.在secureCRT上设置 Options->SessionOptions ->Emulation,然后把Terminal类型改成xterm,并 ...

  10. 关于bootstrap Modal弹窗 滚动条的问题

    如果自己通过代码关闭Modal窗体,需要在代码里增加一句代码 $('body').removeClass('modal-open'); 把这个CSS样式移除了