我有这个我想改变的Dispose方法.(是的,我应该检查每个对象为null,我知道)
protected override void Dispose(bool disposing)
{
if( disposing )
{
if( monthLineBrush != null)
monthLineBrush.Dispose();
monthHeaderLineBrush.Dispose();
shadowBrush.Dispose();
monthHeaderLineBrushDark.Dispose();
monthFontBrush.Dispose();
weekendBgBrush.Dispose();
whiteBrush.Dispose();
dayFontBrush.Dispose();
chartBrush.Dispose();
chartWarningBrush.Dispose();
barBrush.Dispose();
monthLinePen.Dispose();
monthHeaderLinePen.Dispose();
monthHeaderLinePenDark.Dispose();
warningLinePen.Dispose();
monthFont.Dispose();
yearFont.Dispose();
weekLinePen.Dispose();
dayLinePen.Dispose();
tooltip.Dispose();
toolTipLabel.Dispose();
}
base.Dispose(disposing);
}
Run Code Online (Sandbox Code Playgroud)
VS使用名为components的System.ComponentModel.IContainer对象,并仅处理此组件对象.然而,我找不到任何代码,其中不同的对象被添加到组件objedct?
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
Run Code Online (Sandbox Code Playgroud)
这是如何运作的 ?
将components自动生成将创建的每个对象添加到容器的代码,并将其添加到*.Designer.cs设计器与每个表单关联的文件中.
例如,Form1.Designer.cs一旦您ToolTip向表单添加了一个控件,该文件可能在一个全新的空项目中看起来像这样:
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
this.SuspendLayout();
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(284, 264);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
}
Run Code Online (Sandbox Code Playgroud)
在整个混乱中有两个相关的代码行,两个出现在最顶层:
this.components = new System.ComponentModel.Container();
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
Run Code Online (Sandbox Code Playgroud)
第一行创建一个System.ComponentModel.Container名为的对象components,IDisposable在创建它们时将添加所有实现的组件.
第二行创建一个ToolTip对象(响应在设计时对表单的表面施加药物),并使用接受类型参数的构造函数重载IContainer.
将相同的歌曲和舞蹈扩展到添加到表单中的其他组件,可以使用容器提供的Dispose方法一次性处理它们components.
| 归档时间: |
|
| 查看次数: |
3273 次 |
| 最近记录: |