zoukankan      html  css  js  c++  java
  • c# Applicatcontext类

    Application类(位于System.Windows.Forms命名空间)公开了Run方法,可以调用该方法来调度应用程序进入消息循环。Run方法有三个重载

    1、第一个重载版本不带任何参数,比较少使用

    2、static void Run(System.Windows.Forms.Form mainForm)  调用这个重载,只需要吧希望作为主窗口的Form实例(包括从Form类派生的类)

    传递给mianForm参数即可。一旦mainForm关闭,整个消息循环就会退出,Run方法返回,应用程序就会退出。

    3、static void Run(System.Windows.Forms.ApplicationContext context) 这是Run方法中重载最灵活的。通常的做法是从ApplicationContext类

    派生,并写入实现代码。ApplicationContext类也允许设置一个Form实例制作为主窗口,也可以不设置主窗口。这个Run方法会在ApplicationContext

    对象进行消息循环。调用ApplicationContext类的ExitThread方法会导致ApplicationContext上的消息循环终止。

    手动创建一个类:产生三个窗口,只有把三个窗口全部关闭程序才终止运行(基于第三种Run方法)

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Windows.Forms;
    
    
    //从ApplicationContext派生一个类出来,
    public class MyApplication : ApplicationContext
    {
    
        static int WindowsCount;//用于记录窗口个数
        private Form Windows1, Windows2, Windows3;//申请三个Form窗口  private只限于本类成员访问
    
        //构造函数,分别实例化三个窗口
        public MyApplication()
        {
            WindowsCount = 0;
            /*实例化Windows1*/
            Windows1 = new Form();
            Windows1.Text = "窗口1";
            Windows1.Size = new System.Drawing.Size(300, 300);
            Windows1.Location = new System.Drawing.Point(50, 100);
            Windows1.Name = "Form1";
            Windows1.FormClosed += OnMainFormClosed;//处理事件(窗口关闭的处理事件)
            WindowsCount += 1;//窗口总数加一
    
            Windows2 = new Form();
            Windows2.Text = "窗口2";
            Windows2.Size = new System.Drawing.Size(300, 300);
            Windows2.Location = new System.Drawing.Point(50, 100);
            Windows2.Name = "Form2";
            Windows2.FormClosed += OnMainFormClosed;//处理事件(窗口关闭的处理事件)
            WindowsCount += 1;//窗口总数加一
    
            Windows3 = new Form();
            Windows3.Text = "窗口3";
            Windows3.Size = new System.Drawing.Size(300, 300);
            Windows3.Location = new System.Drawing.Point(50, 100);
            Windows3.Name = "Form3";
            Windows3.FormClosed += OnMainFormClosed;//处理事件(窗口关闭的处理事件)
            WindowsCount += 1;//窗口总数加一
    
            //显示3个窗口
            Windows1.Show();
            Windows2.Show();
            Windows3.Show();      
    
        }
        private void OnMainFormClosed(object sender,FormClosedEventArgs e)
        {
            WindowsCount -= 1;
            if (WindowsCount == 0)
                ExitThread();//调用ExitThead终止消息循环
    
        }
    
    }
    namespace application1
    {
        static class Program
        {
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new MyApplication());
            }
        }
    }

     

     

  • 相关阅读:
    【转】mxGraph教程-开发入门指南
    利用IPC通道进行进程间通信(C#)
    C++引用指针 & 构造函数
    MySQL配置主主及主从备份
    MySQL 主从热备份(读写分离)
    SqlServer双机热备技术实践笔记
    c#中的弱引用:WeakReference
    px、em、rem、%、vw、vh、vm这些单位的区别
    深浅clone
    JavaScript-原始值和引用值
  • 原文地址:https://www.cnblogs.com/hjxzjp/p/7674300.html
Copyright © 2011-2022 走看看