簡體   English   中英

如何創建具有3個組合框和每個組合框具有不同數據綁定的用戶控件?

[英]How do I create a user control with 3 combo boxes and a different data binding for each?

在最終決定問這個問題之前,我已經進行了廣泛的搜索。 我遵循了有關創建使用簡單,復雜和查找數據綁定的用戶控件的MSDN教程。

對於僅使用單個組合框或Gridview的用戶控件,它們非常有用。

現在,我想用三個不同的組合框創建一個用戶控件。 我想將每個綁定到不同的表。 這些表是“名稱”,“類型”和“產品”。

MSDN教程涉及為單個組合框創建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();
        }
    }
}

現在,您可以看到,代碼中只提到了一個組合框。 我需要具有三個組合框,每個組合框都綁定到如上所述的不同表。

拜托,我把頭撞在牆上。 我不太熟悉用戶控件(盡管我已經在ASP.NET中使用過它們),但似乎是個好主意,因為我將在以下地區的不同地方大量使用這三個組合框。我的應用程序。

您可以簡單地根據需要推斷出您所知道的:

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,.. 3更好的描述性名稱。

我將創建一個包含三個LookupBoxUserControl 例如:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM