zoukankan      html  css  js  c++  java
  • WinForm程序启动时不显示主窗体

    文中所述WinForm程序启动时不显示主窗体的实现方法主要有以下5种,个人觉得第五种最简单,而且效果也不错,第四种方法也值得推荐。 

    实现代码及简短解释如下:
    //隐藏窗体的方法1/5:不指定任何窗体为主窗体
    //注意:通常,在一个程序中,关闭主窗体,就可以关闭应用程序。
    //但是在没有主窗体中,不行。
    //只能使用Application.Exit()才能关闭应用程序。
    //using可以保证Application结束前,关闭MyMainForm

    using (new Form1())
    {
        Application.Run();
    };
    //Application.Run(new Form1());

    //隐藏窗体的方法2/5:
    //通过close()关闭主窗口同时可以关闭应用程序

    protected override CreateParams CreateParams
    {
        get
        {
            Hide();
            return base.CreateParams;
        }
    }

    //隐藏窗体的方法3/5:
    //这种方法仍然不能用Close主窗口的方式来关闭应用程序, 还得使用Application.Exit。

    protected override void SetVisibleCore( bool value)
    {
        base.SetVisibleCore(false);
    }

    //注意:方法2和3 使用Show好像没办法调出主窗口,比较郁闷。

    //隐藏窗体的方法4/5 part1/2: 推荐使用!!!
    //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中作如下修改: 
    HideOnStartupApplicationContext context = new HideOnStartupApplicationContext( new Form1());
    Application.Run(context );

    //隐藏窗体的方法5/5: 推荐使用!!!
    //在构造函数中或者直接设置form属性

    this.ShowInTaskbar = false;
    this.WindowState = FormWindowState.Minimized;


    程序中配合notifyIcon 控件一起使用,效果很好!
    以上代码在VS2005下编译通过。

  • 相关阅读:
    day77
    75
    ElasticSearch集群的配置
    虚拟机VMware Workstation搭建Linux集群——VMware Tools的安装与配置
    ElasticSearch通过Rest Http API完成基本操作
    Maven笔记
    Oracle通过PL/SQL Developer导出数据为CSV格式,VARCHAR2类型的字段如果存入的是数值(例如3307830000004059)太长,最后一位会被置为0
    Redis的安装与配置
    2017 3月份以来入职感受
    Java设计模式(05-- 代理模式模式 )
  • 原文地址:https://www.cnblogs.com/Randy0528/p/2891999.html
Copyright © 2011-2022 走看看