解决C# 自定义控件数据源绑定的问题

作者: harde 分类: DotNet 发布时间: 2009-09-29 09:25

每次做同样的事的确很麻烦,今天就单独拿出时间做了个自定义控件,
不过刚写道“属性”这我就卡壳了…无他 数据源的问题…
不是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]
试了下
完美解决
Datasource

⬆️⬆️⬆️不要钱、不用登录、没有广告⬆️⬆️⬆️


如果文章对您有帮助,请至少点下⬆️⬆️⬆️上面⬆️⬆️⬆️的赞,您的鼓励是对我创作的最大支持。
如果没能帮到您,那么很遗憾,如果方便的话,还请在评论区告诉我为什么,谢谢。

⬇️⬇️⬇️下面这个要钱⬇️⬇️⬇️

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注