在每一个由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);
}请教大家,这个变量的作用倒底是什么呀?非常感谢
/// <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.新建个窗体,删除了componment,这时没问题的
2.再往窗体拖拽个Timer组件,再看是不是有自动生成了个componment?回答是肯定的。
3.再把componment删了,看看还有没“所谓”,出错了吧!
4.这时其实componment已经不是null了,它已经被new了:this.components = new System.ComponentModel.Container();
1、控制外部资源
IComponent 接口继承自 System.IDisposable 接口,这样可以控制对象的释放。2、设计时支持
只要是支持IComponent接口,都可以看见一个设计器,并且拖入到这个组件中的子组件都会自动产生以下代码:
this.errorProvider1 = new System.Windows.Forms.ErrorProvider(this.components);以便加入站点。3、承载组件
所有的子组件都是通过 IContainer 管理的,所以你的子组件都是被管理的。
1 控制外部资源
IComponent 接口继承自 System.IDisposable 接口,这样可以控制对象的释放。2、设计时支持
只要是支持IComponent接口,都可以看见一个设计器,并且拖入到这个组件中的子组件都会自动产生以下代码:
this.errorProvider1 = new System.Windows.Forms.ErrorProvider(this.components);以便加入站点。3、承载组件
所有的子组件都是通过 IContainer 管理的,所以你的子组件都是被管理的。
2,拖个控件,没有生成components
3,删掉components,没有报错,一切正常。
求解释以下。还有,这个components是合适创建的?我们只看到了它的声明,谢谢。