2010-09-13 84 views
0

我有以下的C#Windows窗體(.NET 4.0)的情況應用:數據綁定到一個自定義的控制

我有一個數據源設置爲自定義類的對象的集合的BindingSource。

該類的大多數屬性都可以用文本框或複選框表示,因爲它們是字符串或數字或布爾值。 但是,有一個屬性稱爲Ratings,它是另一個自定義對象,必須由我開發的自定義控件來表示。

我綁定了一個datagridview到綁定源,顯然dgview正確顯示數字,字符串和布爾值。但是在同一個表單上,我也有一個我開發的自定義控件的實例,所以我想現在要做的就是將自定義控件綁定到與datagridview使用的綁定源相同的綁定源,並綁定到名爲Ratings的特定數據庫。但我對如何開始沒有絲毫的線索。我懷疑我必須實現一些在我的控件上實現DataSource和DataMember的接口,但不知道從哪裏開始。所以基本上我想要的是每次通過在datagridview中選擇另一行來更改所選項目時,相應的Ratings屬性在自定義控件中表示。

現在,我想實現的是工作,但我每個DataGridView中的OnSelectedRowChanged事件被燒成時間刷新我的自定義控制,以及相關聯的選擇項的評級屬性自定義的控制做到這一點endresult。

但我想知道如果我可以完全通過.NET中的數據綁定機制。

感謝您的回覆!

馬修

PS:以進一步澄清,因爲似乎它不以純文本,以便清楚:

表示我作爲數據源使用的BindingSource的對象僞代碼是:

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; } 
    } 

} 

所以我想從綁定源的所有字符串和數字屬性綁定到datagridview,但我需要將屬性綁定到自定義控件。

回答

1

我明白你想在你的自定義控件的DataGridView中有一個特殊的列。爲此,您需要創建DataGridViewCell和DataGridViewColumn的子類並實現IDataGridViewEditingControl。

查看MSDN舉例。

+0

不,如果不明確,不好意思。這不是DataGridView中我想要的特殊列。我有一個完全獨立的自定義控件,我用它來表示Ratings屬性。與DataGridView無關。基本上我希望對象的所有屬性綁定到DataGridView(現在就是這種情況),但需要綁定到自定義控件的Ratings屬性除外。 – tjeuten 2010-09-13 12:30:47

+0

我在我的問題中發佈了一些代碼,希望能夠更加清楚 – tjeuten 2010-09-13 12:39:31

+0

因此,您有一個明細表單,您希望顯示評分,並希望網格視圖的當前項目在此自定義控件中顯示其評分。 – Timores 2010-09-13 12:48:22

相關問題