在每一个由VS自动生成的WIN FORM系统中,好像都有类似于:
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;的语句,但一查发现这个变量其实系统本身好像也没怎么用,删了也“无所谓”,只有如下时用了一下:        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }请教大家,这个变量的作用倒底是什么呀?非常感谢

解决方案 »

  1.   

    不要修改窗体设计器生成的代码,否则IDE处理起来可能会出错。
      

  2.   

    它是窗体设计器自动生成的代码,作为组件的容器。
    当窗体上没有组建时,把它删掉,就像你说的 删了也“无所谓”
    当窗体上有组件时就不能删了,删了会出现错误的。也就是:他是管理组件的一个容器。为了深刻理解,举个例子:
    1.新建个窗体,删除了componment,这时没问题的
    2.再往窗体拖拽个Timer组件,再看是不是有自动生成了个componment?回答是肯定的。
    3.再把componment删了,看看还有没“所谓”,出错了吧!
    4.这时其实componment已经不是null了,它已经被new了:this.components = new System.ComponentModel.Container();
      

  3.   

    MS的解释包括:
    1、控制外部资源
          IComponent 接口继承自 System.IDisposable 接口,这样可以控制对象的释放。2、设计时支持
          只要是支持IComponent接口,都可以看见一个设计器,并且拖入到这个组件中的子组件都会自动产生以下代码:
    this.errorProvider1 = new System.Windows.Forms.ErrorProvider(this.components);以便加入站点。3、承载组件
         所有的子组件都是通过 IContainer 管理的,所以你的子组件都是被管理的。 
      

  4.   

    <转>
    1 控制外部资源
          IComponent 接口继承自 System.IDisposable 接口,这样可以控制对象的释放。2、设计时支持
          只要是支持IComponent接口,都可以看见一个设计器,并且拖入到这个组件中的子组件都会自动产生以下代码:
    this.errorProvider1 = new System.Windows.Forms.ErrorProvider(this.components);以便加入站点。3、承载组件
         所有的子组件都是通过 IContainer 管理的,所以你的子组件都是被管理的。
      

  5.   

    要成为容器,类必须实现 IContainer 接口,该接口支持添加、移除和检索组件的方法。容器是封装和跟踪零个或更多个组件的对象。
      

  6.   

    1,创建窗体,删掉components,ok
    2,拖个控件,没有生成components
    3,删掉components,没有报错,一切正常。
    求解释以下。还有,这个components是合适创建的?我们只看到了它的声明,谢谢。