【发布时间】:2015-02-04 18:26:23
【问题描述】:
我有一个通用的自定义控件,其中包含一个文本框和一个按钮。其他自定义控件继承自此通用控件并指定具体类型,例如:
public class CustomerType
{
public int Id {get; set;}
public int Number {get; set;}
public string Description {get; set;}
}
通用控件有一个Value 属性,它取决于Type 参数和一个Text 属性,根据类型,它可能显示CustomerType.Description 或ProductType.Name。
这些控件用于搜索(例如,客户类型、产品类型等)。
这些控件在放置在普通表单上时可以正常工作。现在我需要在 DataGridView 列中放置这样的控件,所以我尝试遵循这个MSDN article。
目前,2 个派生类如下所示:
public class CustomerTypeColumn : DataGridViewColumn
{
public CustomerTypeColumn()
: base(new CustomerTypeCell())
{ }
public override DataGridViewCell CellTemplate
{
get
{
return base.CellTemplate;
}
set
{
if (value != null && !value.GetType().IsAssignableFrom(typeof(CustomerTypeCell)))
{
throw new InvalidCastException("Should be CustomerTypeCell.");
}
base.CellTemplate = value;
}
}
}
public class CustomerTypeCell : DataGridViewTextBoxCell
{
public CustomerTypeCell()
: base()
{ }
public override Type ValueType
{
get
{
return typeof(CustomerType);
}
}
}
但该列仍显示文本框而不是我的自定义控件。我在这里想念什么?此外,我将如何以及在哪里保存网格中单元格的Value 属性?
【问题讨论】:
标签: c# visual-studio datagridview