2012-03-22 93 views
1

在我當前的Windows應用程序中,我正在尋找如何將數據源提供給我的用戶控件。 在我的頁面上,我在flowlayoutpanel中添加了自己的usercontrol,usercontrol中有3個文本框,我想用數據源填充數據。Usercontrol數據源?

usercontrol uc = new usercontrol(); 
flowlayoutpanel.Controls.Add(uc); 
uc.DataSource? 

我知道,在silverlight和ASP.NET中,您可以將數據源添加到usercontrol。在用戶控件中,您可以使用{Binding fieldname}作爲內容將數據存入文本框。我找不到有關Windows窗體的任何信息。

感謝您的幫助。 Thomas

+0

請注意,像Silverlight這樣的技術包含了一種更爲複雜和先進的數據綁定方式,其中數據綁定仍然是WinForms中的一種事後考慮。 Stuart的答案是一個很好的開始,特別是針對你的問題,你最終可能會直接綁定到你的文本框,而不是任何容器控件(就像你的用戶控件只包含三個文本框一樣)。 – 2012-03-22 14:35:25

+0

是的,我最終在用戶控件中使用了getters和setter。 似乎工作得很好。 – Schoof 2012-03-22 15:23:18

回答

0

我解決了這個問題(感謝斯圖爾特的鏈接),把setters和getters放在我的用戶控件中。

public partial class ucOpleiding : UserControl 
{ 
    public string Datum 
    { 
     get { return txtDatum.Text; } 
     set { txtDatum.Text = value; } 
    } 

    public string Plaats 
    { 
     get { return txtPlaats.Text; } 
     set { txtPlaats.Text = value; } 
    } 

    public string Omschrijving 
    { 
     get { return txtOmschrijving.Text; } 
     set { txtOmschrijving.Text = value; } 
    } 

    public ucOpleiding() 
    { 
     InitializeComponent(); 
    } 

而在我的主要形式中,我會打電話給那些制定者和獲得者。

foreach (opleiding opl in ChauffeurManagement.getOpleidingen(Int32.Parse(cbbID.SelectedValue.ToString()))) 
{ 
    ucOpleiding uc = new ucOpleiding(); 

    uc.Datum = opl.datum.ToString(); 
    uc.Plaats = opl.plaats_instantie; 
    uc.Omschrijving = opl.omschrijving; 

    flpOpleidingen.Controls.Add(uc); 
}