2012-05-23 16 views
0

在最终决定问这个问题之前,我已经做了大量的搜索。我遵循MSDN教程创建使用简单,复杂和查找数据绑定的用户控件。如何用3个组合框创建一个用户控件,并为每个控件创建一个不同的数据绑定?

而且他们工作的伟大......对于只使用单个组合框或GridView的用户控件。

现在我想创建一个用户控件与三个不同的组合框。我想将每个绑定到不同的表。这些表格是“名称”,“类型”和“产品”。

MSDN教程涉及到为单个Combobox创建DataBindingProperties,但不显示如何为包含多个用户控件的用户控件执行相同操作。

using System.Windows.Forms; 
namespace CS 
{ 
    [System.ComponentModel.LookupBindingProperties(
     "DataSource", "DisplayMember", "ValueMember", "LookupMember")] 
    public partial class LookupBox : UserControl 
    { 
     public object DataSource 
     { 
      get{ return comboBox1.DataSource; } 
      set{ comboBox1.DataSource = value; } 
     } 

     public string DisplayMember 
     { 
      get{ return comboBox1.DisplayMember; } 
      set{ comboBox1.DisplayMember = value; } 
     } 

     public string ValueMember 
     { 
      get{ return comboBox1.ValueMember; } 
      set{ comboBox1.ValueMember = value; } 
     } 

     public string LookupMember 
     { 
      get{ return comboBox1.SelectedValue.ToString(); } 
      set{ comboBox1.SelectedValue = value; } 
     } 

     public LookupBox() 
     { 
      InitializeComponent(); 
     } 
    } 
} 

现在,您可以看到,代码中只提到了一个Combobox。我需要有三个组合框,每个绑定到上面提到的不同的表。

拜托,我把头撞在墙上。我对用户控件不太熟悉(尽管我已经在ASP.NET中使用过它们),但是看起来好像是一个好主意,因为我打算在不同的地方使用这三个组合框,我的应用程序。

回答

1

我会创建一个UserControl,其中包含您的LookupBox的三个。例如:

public partial class MyLookupBoxes : UserControl 
{ 
    public LookupBox() 
    { 
     // Add the 3 LookupBox to this UserControl using the designer 
     InitializeComponent(); 
     SetupDataSources(); 
    } 

    private void SetupDataSources() 
    { 
     namesLookupBox1.DataSource = names_data_source_1; 
     // ... 
     typesLookupBox2.DataSource = types_data_srouce_2; 
     // ... 
     productsLookupBox3.DataSource = products_data_srouce_2; 
     // ... 
    } 
} 
+0

其实,这正是我计划要做的。这三个LookupBoxes将成为单个用户控件的一部分(称为'Description'),并且THAT用户控件将被添加到其他几个用户控件中。所以它基本上是一个用户控件,在另一个用户控件的内部。谢谢您的回答。你对我的代码有意义,但我很好奇下一个用户控件的代码(它将包含这个代码)看起来像什么。我的意思是,如果我有三个嵌套控件,每次都必须深入三个层次吗? –

2

你可以简单地推断你知道你需要什么东西:

public object DataSource1 
{ 
    get{ return comboBox1.DataSource; } 
    set{ comboBox1.DataSource = value; } 
} 
public object DataSource2 
{ 
    get{ return comboBox2.DataSource; } 
    set{ comboBox2.DataSource = value; } 
} 
public object DataSource3 
{ 
    get{ return comboBox3.DataSource; } 
    set{ comboBox3.DataSource = value; } 
} 

虽然你可能想比..1,..2,..三合一做出更好的描述性名称。

相关问题