WinForm程序启动时不显示主窗体的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之间的依赖。

(0)

相关推荐

  • 如何在wps2019中设置程序启动时自动切换默认输入法

    在使用wps2019的时候,如果想要在启动程序时,能够自动切换至默认输入法的话,应如何操作呢?接下来就由小编来告诉大家.具体如下:1. 第一步,打开电脑中的开始菜单,然后在其中找到wps office ...

  • 设置Word2013启动时不显示开始屏幕

    ①启动Word2013,看到的就是开始屏幕而并没有自动新建空白的文档。 ②单击文件,在下拉列表中选择账户。 ③在常规选项卡中,取消勾选启动选项里面的此应用程序启动时显示开始屏幕。 ④大家按照我说的做, ...

  • word启动时自动显示打开窗口

     word启动时自动显示打开窗口,大多情况下启动Word后第一件事就是执行“打开”命令,何不让Word一启动就自动显示“打开”对话框呢?这样我们需要多次修改一些个人简历表格的时候,就可以快速打开了,因 ...

  • 千千静听中的程序启动时自动播放功能怎么设置开启

    我们想要开启千千静听中的程序启动时自动播放功能,该怎么操作呢?今天就跟大家介绍一下千千静听中的程序启动时自动播放功能怎么设置开启的具体操作步骤.1. 打开电脑,依次点击左下角的开始---"千 ...

  • 如何在打开Excel工作簿时立即显示用户窗体

    在Excel中使用VBA时,可以创建类似于独立软件的"用户窗体",只是这个"软件"只能运行在Excel环境中,通常用户窗体是在打开Excel工作簿后,在VBE环 ...

  • 如何设置WPS程序启动时自动切换到默认输入法

    如何设置WPS程序启动时自动切换到默认输入法呢,现在我就来为大家说明一下如何操作. 操作方法 01 启动WPS文字程序,点击选择界面左上角的[WPS文字]选项.(如图所示) 02 在点击[WPS文字] ...

  • Win8在启动时按F8出现修复计算机选项的方法

    Win8在启动时按F8出现修复计算机选项的方法如下: 在Win7以及更早的Windows系统中,开机按shift+F8可以进入“高级启动选项”,Windows 7在默认安装情况下“高级启动选项”中是包 ...

  • 在Winform程序运行时启动Cmd命令行显示日志信息的设置方法

    现在要做一个winform程序,读取一个excel文件的每一条记录,然后进行相应的计算处理后,把结果写入另外一个excel文件中。现在要求每一条记录完成后,都要有一个提示,第i行记录完成了,把用的时间 ...

  • Word启动时自动显示打开对话框的技巧

    笔者每天都要使用Word,大多情况下启动Word后第一件事就是执行“打开”命令,既然如此,何不让Word一启动就自动显示“打开”对话框呢?这样我们需要多次修改一些个人简历表格的时候,就可以快速打开了, ...