手机
当前位置:查字典教程网 >软件教程 >编程开发 >WinForm程序启动时不显示主窗体的5种方法
WinForm程序启动时不显示主窗体的5种方法
摘要:实现代码及简短解释如下://隐藏窗体的方法1/5:不指定任何窗体为主窗体//注意:通常,在一个程序中,关闭主窗体,就可以关闭应用程序。//但...

实现代码及简短解释如下:

//隐藏窗体的方法1/5:不指定任何窗体为主窗体

//注意:通常,在一个程序中,关闭主窗体,就可以关闭应用程序。

//但是在没有主窗体中,不行。

//只能使用Application.Exit()才能关闭应用程序。

//using可以保证Application结束前,关闭MyMainForm

using (new Form1())

{

Application.Run();

};

//Application.Run(new Form1());</p> <p>//隐藏窗体的方法2/5:

//通过close()关闭主窗口同时可以关闭应用程序

protected override CreateParams CreateParams

{

get

{

Hide();

return base.CreateParams;

}

}</p> <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 mainFormInternal;</p> <p> // 构造函数,主窗体被存储在mainFormInternal

public HideOnStartupApplicationContext( Form mainForm)

{

this.mainFormInternal = mainForm;</p> <p> this.mainFormInternal .Closed += new EventHandler(mainFormInternal_Closed);

}</p> <p> // 当主窗体被关闭时,退出应用程序

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 = false;

this.WindowState = FormWindowState.Minimized;

程序中配合notifyIcon 控件一起使用,效果很好!

以上代码在VS2005下编译通过。

以下是补充:

WinForm程序启动时不显示主窗体的实现方法

方法一:

工程文件Project1.dpr代码如下:

program Project1;

uses

Forms,

Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin

Application.Initialize;

Application.CreateForm(TForm1, Form1);

application.showmainform:=false; //隐藏主窗体

Application.Run;

end.

方法二:

使用ApplicationContext:

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当中像下面这样调用既可:

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之间的依赖。

【WinForm程序启动时不显示主窗体的5种方法】相关文章:

eclipse新建java项目文件的三种方法

PHPstorm8 自动换行设置方法

Lazarus优化编译后文件大小的方法

cygwin安装教程 cygwin安装使用方法

用visual studio 2010 打开winform程序时无法运行的解决方法

dreamweaver显示隐藏元素行为的操作方法

Eclipse怎么快速注释程序代码?eclipse快速添加注释的三种办法

dreamweaver自动更新链接的设置方法

用perl发一大堆邮件的一种方法

Zend Studio代码不能自动提示的修复解决方法

精品推荐
分类导航