0

在最终决定问这个问题之前,我做了一些广泛的搜索。我按照 MSDN 教程创建了使用简单、复杂和查找数据绑定的用户控件。

而且它们工作得很好……对于只使用单个 Combobox 或 Gridview 的用户控件。

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

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

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 中使用过它们),但制作一个似乎是个好主意,因为我将在不同的地方大量使用这三个组合框我的应用程序。

4

2 回答 2

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

于 2012-05-23T17:57:21.843 回答
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;
        // ...
    }
}
于 2012-05-23T18:02:48.007 回答