解决C# 自定义控件数据源绑定的问题
每次做同样的事的确很麻烦,今天就单独拿出时间做了个自定义控件,
不过刚写道“属性”这我就卡壳了…无他 数据源的问题…
不是BindingSource类型…
晕了…无奈MSDN吧…..
找了半天终于翻出来了
AttributeProviderAttribute 类
MSDN:ms-help://MS.MSDNQTR.v90.chs/fxref_system/html/fdad4c93-2653-5b58-9de8-16d07107e47d.htm
备注是这样写的
在 .NET Framework 对象模型中,有些情况下会有意将属性类型化为模糊的。例如,将 DataGridView..::.DataSource 属性类型化为 object。之所以这样,是为了让此属性可以接受多种类型的输入。遗憾的是,这样做并未提供添加元数据以描述属性特性的通用方法。对于需要元数据的类型转换器、UI 类型编辑器和其他服务,.NET Framework 中的每个 DataSource 属性都需要具有相同的元数据。AttributeProviderAttribute 对此情况进行了补救。
此属性 (Attribute) 一旦被置于属性 (Property) 上,用于获得属性 (Property) 描述符的 MemberDescriptor..::.Attributes 集合的属性 (Attribute) 的规则就会有所不同。通常,属性 (Property) 描述符收集本地属性 (Attribute),然后再将其与来自属性 (Property) 类型的属性 (Attribute) 进行合并。在此情况下,将从 AttributeProviderAttribute 所返回的类型中而不是从实际属性 (Property) 类型获取属性 (Attribute)。此属性 (Attribute) 用在 DataGridView..::.DataSource 中,以使 DataGridView..::.DataSource 对象的特定类型指向 IListSource,并且相应的元数据放在 IListSource 中,以启用数据绑定。在这种情况下,可以从外部轻松地向所有数据源添加元数据。
在属性 (Property) 类型的属性 (Attribute) 和属性 (Property) 上的属性 (Attribute) 之间,从 AttributeProviderAttribute 中声明的类型中获取的属性 (Attribute) 优先。下面的列表按优先级顺序显示可用的已合并属性 (Attribute) 的全集:
属性 (Property) 的属性 (Attribute)
属性提供程序属性
属性 (Property) 类型的属性 (Attribute)
底下也给出代码
[CSHARP” collapse=”true” line=”1 ]
[Category(“Data”)]
[Description(“Indicates the source of data for the control.”)]
[RefreshProperties(RefreshProperties.Repaint)]
[AttributeProvider(typeof(IListSource))]
public object DataSource
{
get
{
return this.dataGridView1.DataSource;
}
set
{
this.dataGridView1.DataSource = value;
}
}
[/CSHARP” collapse=”true” line=”1]
试了下
完美解决