【问题标题】:Usercontrol Datasource?用户控制数据源?
【发布时间】:2012-04-07 03:01:45
【问题描述】:

在我当前的 Windows 应用程序中,我正在研究如何为我的用户控件提供数据源。 在我的页面上,我在 flowlayoutpanel 中添加了自己的用户控件,该用户控件中有 3 个文本框,我想用数据源中的数据填充它们。

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

我知道在 Silverlight 和 ASP.NET 中,您可以将数据源添加到用户控件。在用户控件中,您可以使用 {Binding fieldname} 作为其内容将数据放入文本框中。我找不到任何有关 Windows 窗体的信息。

感谢您的帮助。 托马斯

【问题讨论】:

  • 请注意,Silverlight 等技术包含更复杂和更高级的数据绑定方式,其中数据绑定在 WinForms 中仍然是一种事后的想法。 Stuart 的回答是一个很好的起点,特别是对于您的问题,您最终可能会直接绑定到您的文本框,而不是任何容器控件(就像您的用户控件只包含三个文本框而没有其他内容一样)。
  • 是的,我最终在用户控件中使用了 getter 和 setter。似乎工作得很好。

标签: c# winforms data-binding user-controls datasource


【解决方案1】:

我通过将 setter 和 getter 放入我的用户控件中解决了这个问题(感谢 Stuart 的链接)。

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

然后在我的主要形式中,我将调用这些 setter 和 getter。

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

【讨论】:

    【解决方案2】:

    MSDN 上有一篇文章可以帮助您实现这一点 - Walkthrough: Creating a User Control that Supports Simple Data Binding(另请参阅 Complex 和 Lookup 数据绑定演练)。

    【讨论】:

    • 感谢您的链接,但是当他们告诉您找到 PhoneNumberBox 时,我在关联控件列表中找不到它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    • 1970-01-01
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    相关资源
    最近更新 更多