在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
实现代码及简短解释如下: 复制代码 代码如下://隐藏窗体的方法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 控件一起使用,效果很好! 方法一: 工程文件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之间的依赖。 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论