WinForm程序启动时不显示主窗体的5种方法

如题所述

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

复制代码

代码如下:

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

winformocx控件有时不显示
解决办法如下:1、将vs.net关掉。2、将其他的无关程序关掉,保证有足够的内存。3、重新打开vs.net,并将那个解决方案打开,将所有的窗体设计器都关闭。4、重新生新解决方案。5、再次打开那个窗体,应该就能显示。

winform为什么控件不显示
1、将vs.net关掉 2、将其他的无关程序关掉,保证有足够的内存(因为你的内存可能不足)3、重新打开vs.net,并将那个解决方案打开,将所有的窗体设计器都关闭 4、重新生新解决方案(注:如果里面有多个项目的话,可一个一个项目重新编译,编译顺序:由关联项目最少的开始)5、再次打开那个窗体,应该...

winform界面出不来如何解决?
开机按F8,看能否进入安全模式或最后一次配置正确模式,如能则进入后退出,再重启就应当能进入正常模式。如果不能,重启后按F11,看有没有一键备份,有则一键还原。

winform如何在show处一个窗体后,关闭本窗体
Form3,Form4。主窗体不关闭隐藏它,其他窗体关闭。运行该工程 Form1进入第二个界面 Form2.show,Form1.hide。进入第三个界面 Form3.show,Form2.close。进入第四个界面 Form4.show,Form3.close。退出该工程 Form4.close,Form1.close。

c#winform程序。大家看看为什么我的程序运行开始,这些button控件位置...
按照你的设置显示出来就是这样的,可能你的设置有问题 button外面的控件你设置了高度百分比,而你又让那些button在外面控件的top和bottom显示才会这样。你直接将button外面的控件的高度定死了就不会这样了

c#:winform如何让一堆控件平时隐藏,在点击触发时才 显示出来?如图。
每个控件都有一个属性值Visibility是控制这个,有三个属性值,Visible是默认属性值可见的,Hidden是隐藏不占空间,如果是个button控件就不能点击,collapsed是隐藏但是占空间,如果是个button控件就依旧可以在那个位置点击但是看不见,只需创建个事件控制这个属性值就可以达到你要的效果了 ...

登陆界面,如何实现关闭登陆对话框,不执行主窗体。
你的系统是winform吧,一个最简单的方法就是向主界面传参数,如果主界面根据参数判断是没有登录,那就让程序退出就可以了.一般程序登录后都要记录用户名等相关信息,你就直接判断用户名是不是合法就行了.当然还有很多其它的方法...

C#的 winform程序,登录完了怎么关掉登录窗体?
合理的做法是程序启动的时候直接启动主程序窗体,主程序在加载的时候判断用户是否登录,或是否有相关登录凭证,如果没有就弹出登录窗口要求登录。用户登录成功后关闭登录子窗口。

按钮打开窗体时出现报错怎么处理? 说打开了不存在的窗体是什么意思?
1、在winform项目点击右键-添加-新建项-Windows Forms-Windows 窗体,新百建一个要弹出的窗体Form2。2、在问Form1中拖入一个button,修改答Text属性为弹出窗体。版 3、双击按钮,进入权代码编写界面。4、编写代码“Form2 form2=new Form2;form2.ShowDialog();”。5、点击启动按钮,或者按F5键,运行...

相似回答
大家正在搜