使用行模板的自定义数据网格视图在窗体中使用时会给出转换错误

本文关键字:窗体 错误 转换 网格 自定义 数据网 数据 视图 | 更新日期: 2023-09-27 18:32:03

我通过继承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 ()
    {
    }
    ...
}

窗体设计器代码的一部分:

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

我在这里做错了什么?

使用行模板的自定义数据网格视图在窗体中使用时会给出转换错误

刚刚找到了我的问题的解决方案。

我已经覆盖了MyDataGridView类中的RowTemplate属性

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;
        }
    }
    ...
}