使用行模板的自定义数据网格视图在窗体中使用时会给出转换错误
本文关键字:窗体 错误 转换 网格 自定义 数据网 数据 视图 | 更新日期: 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;
}
}
...
}