惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
Microsoft Azure Blog
Microsoft Azure Blog
aimingoo的专栏
aimingoo的专栏
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
阮一峰的网络日志
阮一峰的网络日志
Martin Fowler
Martin Fowler
B
Blog
The GitHub Blog
The GitHub Blog
T
Tailwind CSS Blog
Stack Overflow Blog
Stack Overflow Blog
L
LangChain Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
D
DataBreaches.Net
月光博客
月光博客
人人都是产品经理
人人都是产品经理
IT之家
IT之家
GbyAI
GbyAI
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
WordPress大学
WordPress大学
博客园 - Franky
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
The Cloudflare Blog
C
Check Point Blog
罗磊的独立博客

博客园 - Randy0528

IIS 日志导入到数据库的方法 解决win7 win10上网卡慢问题 [转]每秒处理10万订单乐视集团支付架构 [转]WINDOWS服务器安全加固实战(WINDOWS SERVER 2008 R2和WINDOWS SERVER 2012) IIS6下使用多域名和通配符证书 大蒜敷脚心涌泉穴的功效和具体方法 移动端前端UI库—Frozen UI、WeUI、SUI Mobile 用户中心 - 博客园 [转]Win2003打不开https的问题 WCF x509证书安装问题汇总 [转]史上最全的CSS hack方式一览 Android Intent的几种用法全面总结 比亚迪速锐F3专用夏季座套 夏天坐垫 四季坐套 C#实现全局快捷键(系统热键)响应(转) 程序隐藏启动的C#实现经验 淘宝客链接 初夏养生宜清热利湿 介绍五种“去火”食疗法 中医谈论口中异味
WinForm程序启动时不显示主窗体
Randy0528 · 2013-02-04 · via 博客园 - Randy0528

文中所述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 控件一起使用,效果很好!
以上代码在VS2005下编译通过。