2012-05-23 49 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,..三合一做出更好的描述性名稱。

相關問題