1

我通过继承 Windows.Forms.DataGridView 创建了一个自定义 DataGridView。我还通过继承 Windows.Forms.DataGridViewRow 创建了一个自定义 DataGridViewRow。然后我使用 MyDataGridViewRow 作为 MyDataGridView 的 RowTemplate。一切正常。但是当我将 MyDataGridView 添加到表单时,它会在属于 MyDataGridViewRow 的表单设计器文件中生成属性,但由于 RowTemplate 是 DataGridViewRow,因此文件将无法编译。

我已手动将 RowTemplate 转换为 MyDataGridRow 以更正错误。但由于此代码是由 Visual Studio 自动生成的,它们将更改为原始格式。

这是我当前的代码片段

public class MyDataGridView : DataGridView, IMyInterface
{
    public string LuName{get; set;}

    public MyDataGridView ()
    {
        this.RowTemplate = new MyDataGridViewRow();
    }
    ...
}

public class MyDataGridViewRow : DataGridViewRow, IMyInterface2
{
    public string RowName{get; set;}

    public MyDataGridViewRow ()
    {

    }
    ...
}

Form的设计器代码的一部分:

partial class Form4
{
    ...
    #region Windows Form Designer generated code
    this.myDataGridView1.RowTemplate.RowName= null;  // here's the error generated line
    #endregion
    ...
}

我在这里做错了什么?

4

1 回答 1

1

just found a solution for my problem.

i have override the RowTemplate Property in MyDataGridView class

public class MyDataGridView : DataGridView, IMyInterface
{
    public string LuName{get; set;}

    public MyDataGridView ()
    {
        this.RowTemplate = new MyDataGridViewRow();
    }

    //Soution is override the RowTemplate Property By MyDataGridViewRow

    public new MyDataGridViewRow RowTemplate
    {
        get
        {
            return (MyDataGridViewRow)base.RowTemplate;
        }
        set
        {
            base.RowTemplate = value;
        }
    }

    ...
}
于 2012-04-24T08:44:30.100 回答