2010年 总版技术专家分年内排行榜第二
2009年 总版技术专家分年内排行榜第三
2010年 总版技术专家分年内排行榜第二
2009年 总版技术专家分年内排行榜第三
2010年 总版技术专家分年内排行榜第二
2009年 总版技术专家分年内排行榜第三
本帖子已过去太久远了,不再提供回复功能。WinForm程序启动时不显示主窗体的5种方法
作者:佚名
字体:[ ] 来源:互联网 时间:02-28 15:54:14
文中所述WinForm程序启动时不显示主窗体的实现方法主要有以下5种,个人觉得第五种最简单,而且效果也不错,第四种方法也值得推荐
实现代码及简短解释如下:代码如下://隐藏窗体的方法1/5:不指定任何窗体为主窗体//注意:通常,在一个程序中,关闭主窗体,就可以关闭应用程序。//但是在没有主窗体中,不行。//只能使用Application.Exit()才能关闭应用程序。//using可以保证Application结束前,关闭MyMainFormusing (new Form1()){
Application.Run();};//Application.Run(new Form1());&/p&
&p&//隐藏窗体的方法2/5://通过close()关闭主窗口同时可以关闭应用程序protected override CreateParams CreateParams{
return base.CreateP
&p&//隐藏窗体的方法3/5://这种方法仍然不能用Close主窗口的方式来关闭应用程序, 还得使用Application.Exit。protected override void SetVisibleCore( bool value){
base.SetVisibleCore(false);}&/p&
&p&//注意:方法2和3 使用Show好像没办法调出主窗口,比较郁闷。&/p&
&p&//隐藏窗体的方法4/5 part1/2: 推荐使用!!!&/p&
&p&//ApplicationContext实质上就是一个Application与主窗体之间的连接器, //掌管着二者之间的互动关系。其中最主要的,就是负责在主窗体//关闭时结束线程。既然如此,我们只要根据需要自定义一个ApplicationContext就可以了internal class HideOnStartupApplicationContext : ApplicationContext{
private Form mainFormI&/p&
// 构造函数,主窗体被存储在mainFormInternal
public HideOnStartupApplicationContext( Form mainForm)
this.mainFormInternal = mainF&/p&
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 );&/p&
&p&//隐藏窗体的方法5/5: 推荐使用!!!//在构造函数中或者直接设置form属性this.ShowInTaskbar =this.WindowState = FormWindowState.M
程序中配合notifyIcon 控件一起使用,效果很好!以上代码在VS2005下编译通过。以下是补充:WinForm程序启动时不显示主窗体的实现方法
工程文件Project1.dpr代码如下:
代码如下:program Project1; uses
Unit1 in 'Unit1.pas' {Form1}; {$R *.res} begin
Application.I
Application.CreateForm(TForm1, Form1);
application.showmainform:= //隐藏主窗体
Application.R end.
使用ApplicationContext:
ApplicationContext实质上就是一个Application与主窗体之间的连接器,掌管着二者之间的互动关系。其中最主要的,就是负责在主窗体关闭时结束线程。既然如此,只要根据需要自定义一个ApplicationContext就可以了:
internal class HideOnStartupApplicationContext : ApplicationContext
private Form mainFormI
// 构造函数,主窗体被存储在mainFormInternal
public HideOnStartupApplicationContext(Form mainForm)
this.mainFormInternal = mainF
this.mainFormInternal.Closed += new EventHandler(mainFormInternal_Closed);
// 当主窗体被关闭时,退出应用程序
void mainFormInternal_Closed(object sender, EventArgs e)
Application.Exit();
随后,只需要在Main当中像下面这样调用既可:
static void Main()
HideOnStartupApplicationContext context = new HideOnStartupApplicationContext(new MainForm());
Application.Run(context);
这样,MainForm根本不用去考虑窗口与应用程序的关系,安安心心做它的&主窗口&就可以了。
此外,既然明白了ApplicationContext掌管着窗口结束与程序结束的关系,我们就可以用它来做出一些有趣的东西:
比如MSDN上就给出了一个&双主窗口&&&同时显示2个Form,关闭其中任何一个都不会导致程序结束,只有全部关闭了才会结束程序。有兴趣的朋友可以参看MSDN关于ApplicationContext的资料,那里给出了详细的说明和范例代码。
再如,要设计一个&向导(Wizard)&类的程序,使用ApplicationContext也是最佳选择&&它可以轻松控制Form到Form的流程,以及Form的启动与关闭,使得你的每个Form更加模块化,减少Form之间的依赖。
大家感兴趣的内容
12345678910
最近更新的内容2014年4月 Delphi大版内专家分月排行榜第三2014年3月 Delphi大版内专家分月排行榜第三2013年5月 Delphi大版内专家分月排行榜第三2013年1月 Delphi大版内专家分月排行榜第三2010年11月 Delphi大版内专家分月排行榜第三2009年12月 Delphi大版内专家分月排行榜第三2009年11月 Delphi大版内专家分月排行榜第三
2014年3月 C++ Builder大版内专家分月排行榜第二2014年1月 C++ Builder大版内专家分月排行榜第二2013年12月 C++ Builder大版内专家分月排行榜第二2013年8月 C++ Builder大版内专家分月排行榜第二2013年7月 C++ Builder大版内专家分月排行榜第二2013年4月 Delphi大版内专家分月排行榜第二
2013年11月 C++ Builder大版内专家分月排行榜第三2013年9月 C++ Builder大版内专家分月排行榜第三2013年6月 C++ Builder大版内专家分月排行榜第三2013年3月 Delphi大版内专家分月排行榜第三
2013年9月 Delphi大版内专家分月排行榜第二2012年12月 Delphi大版内专家分月排行榜第二
2013年4月 Delphi大版内专家分月排行榜第三
2017年4月 Delphi大版内专家分月排行榜第二2017年1月 Delphi大版内专家分月排行榜第二2014年10月 Delphi大版内专家分月排行榜第二2014年9月 Delphi大版内专家分月排行榜第二
2017年4月 Delphi大版内专家分月排行榜第二2017年1月 Delphi大版内专家分月排行榜第二2014年10月 Delphi大版内专家分月排行榜第二2014年9月 Delphi大版内专家分月排行榜第二
2017年4月 Delphi大版内专家分月排行榜第二2017年1月 Delphi大版内专家分月排行榜第二2014年10月 Delphi大版内专家分月排行榜第二2014年9月 Delphi大版内专家分月排行榜第二
本帖子已过去太久远了,不再提供回复功能。