如何在表单类中部署本地组件

时间:2017-11-15 12:40:16

标签: c# winforms idisposable fxcop

即使在正确处理组件上的dispose之后,我也面临FxCop对本地组件变量的警告。代码如下:

public partial class Form2 : Form
{
    private System.ComponentModel.IContainer components = null;

    protected override void Dispose(bool disposing)
    {
        if (disposing && (components != null))
        {
            components.Dispose();
        }
        base.Dispose(disposing);
    }

    public Form2()
    {
        InitializeComponent();

        components = new System.ComponentModel.Container();
    }

    private void Form2_Load(object sender, EventArgs e)
    {
        DataGridViewTextBoxColumn colm = null;
        try
        {
            colm = new DataGridViewTextBoxColumn();
            colm.HeaderText = @"Header text";

            dataGridView1.Columns.Add(colm);
        }
        finally
        {
            if (colm != null)
                components.Add(colm);
        }
    }
}

这里我将代码中的新组件DataGridViewTextBoxColumn添加到DataGridView中。警告是我需要在代码中处理新创建的colm,但已经添加到表单的容器支持中,它将在表单的dispose上处理所有组件。

FxCop警告是:

CA2000在丢失范围之前处置对象在方法“Form2.Form2_Load(object,EventArgs)”中,对象“colm”未沿所有异常路径放置。在对对象'colm'的所有引用超出范围之前调用System.IDisposable.Dispose。 WindowsFormsApplication1 Form2.cs 36

针对此类情况的任何修复?

0 个答案:

没有答案