数据绑定到自定义控件

时间:2010-09-13 12:01:40

标签: c# data-binding custom-controls

我在C#Windows窗体(.NET 4.0)应用程序中遇到以下情况:

我有一个bindingsource,数据源设置为自定义类的对象集合。

此类的大多数属性可以用文本框或复选框表示,因为它们是字符串或数字或bool。 但是,有一个名为Ratings的属性,它是另一个自定义对象,必须由我开发的自定义控件表示。

我已将datagridview绑定到bindingsource,显然dgview正确显示数字,字符串和bools。但是在同一个表单上我还有一个我开发的自定义控件的实例,所以我现在想要做的是将我的自定义控件绑定到datagridview使用的相同绑定源,并绑定到名为Ratings的特定数据库。但我对如何开始没有丝毫的线索。我怀疑我必须实现一些在我的控件上实现DataSource和DataMember的接口,但不知道从哪里开始。基本上我想要的是每次通过在datagridview中选择另一行来更改所选项时,相应的Ratings属性在自定义控件中表示。

现在我希望实现的结果是有效的,但是每次触发datagridview的OnSelectedRowChanged事件时刷新我的自定义控件,并将所选项的Ratings属性与自定义控件相关联。< / p>

但我想知道我是否可以通过.NET中的数据绑定机制完全实现这一点。

感谢您的回复!

马修

ps:进一步澄清,因为它在纯文本中似乎不那么清楚:

表示我用作bindingsource数据源的对象的Psuedo代码是:

public class Car
{

   private string number;
   private string name;
   ...
   private Ratings ratings;


   public string Number
   {
     get { return this.number; }
     set { this.number = value; }
   }

   public string Name
   {
     get { return this.name; }
     set { this.name = value; }
   }

   ...

   public Ratings Ratings
   {
     get { return this.ratings; }
     set { this.ratings = value; }
   }

}

所以我希望bindingsource中的所有字符串和数字属性都绑定到datagridview,但我需要Ratings属性绑定到自定义控件。

2 个答案:

答案 0 :(得分:1)

我知道您希望在DataGridView中使用自定义控件创建一个特殊列。为此,您需要创建DataGridViewCell和DataGridViewColumn的子类并实现IDataGridViewEditingControl。

有关示例,请参阅MSDN

答案 1 :(得分:0)

您可以阅读有关interfaces related to data binding的Microsoft文章。您感兴趣的是位于“组件作者实现的接口”部分的底部。