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 = ;
/*实例化Windows1*/
Windows1 = new Form();
Windows1.Text = "窗口1";
Windows1.Size = new System.Drawing.Size(, );
Windows1.Location = new System.Drawing.Point(, );
Windows1.Name = "Form1";
Windows1.FormClosed += OnMainFormClosed;//处理事件(窗口关闭的处理事件)
WindowsCount += ;//窗口总数加一 Windows2 = new Form();
Windows2.Text = "窗口2";
Windows2.Size = new System.Drawing.Size(, );
Windows2.Location = new System.Drawing.Point(, );
Windows2.Name = "Form2";
Windows2.FormClosed += OnMainFormClosed;//处理事件(窗口关闭的处理事件)
WindowsCount += ;//窗口总数加一 Windows3 = new Form();
Windows3.Text = "窗口3";
Windows3.Size = new System.Drawing.Size(, );
Windows3.Location = new System.Drawing.Point(, );
Windows3.Name = "Form3";
Windows3.FormClosed += OnMainFormClosed;//处理事件(窗口关闭的处理事件)
WindowsCount += ;//窗口总数加一 //显示3个窗口
Windows1.Show();
Windows2.Show();
Windows3.Show(); }
private void OnMainFormClosed(object sender,FormClosedEventArgs e)
{
WindowsCount -= ;
if (WindowsCount == )
ExitThread();//调用ExitThead终止消息循环 } }
namespace application1
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MyApplication());
}
}
}

c# Applicatcontext类的更多相关文章

  1. Java类的继承与多态特性-入门笔记

    相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...

  2. spring容器、BeanFactory、ApplicatContext、WebApplicationContext

    1.spring容器 BeanFactory提供了IoC的功能:ApplicatContext建立在BeanFactory的基础上 在初始化BeanFactory的实现类时,并没有实例化Bean,直到 ...

  3. C++ 可配置的类工厂

    项目中常用到工厂模式,工厂模式可以把创建对象的具体细节封装到Create函数中,减少重复代码,增强可读和可维护性.传统的工厂实现如下: class Widget { public: virtual i ...

  4. Android请求网络共通类——Hi_博客 Android App 开发笔记

    今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...

  5. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

    在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...

  6. ASP.NET Core 折腾笔记二:自己写个完整的Cache缓存类来支持.NET Core

    背景: 1:.NET Core 已经没System.Web,也木有了HttpRuntime.Cache,因此,该空间下Cache也木有了. 2:.NET Core 有新的Memory Cache提供, ...

  7. .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类

    .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类 0x00 为什么要引入扩展方法 有的中间件功能比较简单,有的则比较复杂,并且依赖其它组件.除 ...

  8. Java基础Map接口+Collections工具类

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

  9. PHP-解析验证码类--学习笔记

    1.开始 在 网上看到使用PHP写的ValidateCode生成验证码码类,感觉不错,特拿来分析学习一下. 2.类图 3.验证码类部分代码 3.1  定义变量 //随机因子 private $char ...

随机推荐

  1. myeclipse项目导入到eclipse, HttpServletRequest报红现象

    eclipse项目中关于导入的项目里提示HttpServletRequest 不能引用的解决办法 当使用eclipse导入外部的web工程时,有时会提示HttpServletRequest, Serv ...

  2. 看大师解说Android高速开发框架EasyAndroid

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u010966622/article/details/37601789 前几天做了小应用.感觉小有成就 ...

  3. 20170720 Celery 异步任务处理到Sql Server 发生死锁

    -- 1.  异常提示情况如下: 需要解决为什么引起死锁 -- 叹气 原因: 在使用Celery 启用了 配置参数 CELERYD_CONCURRENCY = 10  表示开了10块线程池. 有好处, ...

  4. what's the 头寸

    头寸,是一种市场约定,承诺买卖外汇合约的最初部位,买进外汇合约者是多头,处于盼涨部位:卖出外汇合约为空头,处于盼跌部位.头寸可指投资者拥有或借用的资金数量. “头寸”一词来源于近代中国,银行里用于日常 ...

  5. 工具篇-Mac上搭建本地svn服务器以及使用Cornerstone进行本地版本控制

    1.在桌面上见一个文件夹命名为svn,然后打开终端: 创建一个mycode仓库:svnadmin create /Users/gaoyizhen736(自己的mac的用户名)/Desktop/svn/ ...

  6. vuex操作

    import Vuex from 'vuex' //引入Vue.use(Vuex) //加载到Vue中//创建一个数据存储对象var store=new Vuex.Store({ //state可以当 ...

  7. spark.yarn.jar和spark.yarn.archive的使用

    启动Spark任务时,在没有配置spark.yarn.archive或者spark.yarn.jars时, 会看到不停地上传jar非常耗时:使用spark.yarn.archive可以大大地减少任务的 ...

  8. [vue]webpack中使用组件

    https://blog.csdn.net/ywl570717586/article/details/79984909 vue.js中全局组件 全局组件的定义 <!DOCTYPE html> ...

  9. JAVA编程思想学习笔记2-chap4-6-斗之气2段

    1.foreach:只能用于数组与容器 2.this指针:内部有个指针指向自己 3.super指针:内部有个指针指向父类部分 4.方法存放于代码区:方法调用时,a.fun()可能会被转换为fun(a) ...

  10. js函数中写默认值的几种方式(常见的)

    <script> <!--第一种写法,我更喜欢第一种写法直观一些--> function Person(name){ this.name = name || '默认名字乔丹'; ...