C# 如何创建一个包含3个组合框的用户控件,并为每个组合框创建不同的数据绑定?
在最终决定提出这个问题之前,我做了一些广泛的研究。我学习了MSDN教程,了解如何创建使用简单、复杂和查找数据绑定的用户控件C# 如何创建一个包含3个组合框的用户控件,并为每个组合框创建不同的数据绑定?,c#,data-binding,controls,combobox,C#,Data Binding,Controls,Combobox,在最终决定提出这个问题之前,我做了一些广泛的研究。我学习了MSDN教程,了解如何创建使用简单、复杂和查找数据绑定的用户控件 对于只使用单个组合框或Gridview的用户控件来说,它们工作得非常好 现在我想用三个不同的组合框创建一个用户控件。我想把每一张都绑在一张不同的桌子上。这些表是“名称”、“类型”和“产品” MSDN教程涉及为单个组合框创建DataBindingProperties,但没有说明如何为包含多个组合框的用户控件创建DataBindingProperties using
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更好的描述性名称。您可以简单地根据需要推断您所知道的内容:
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更好的描述性名称。我将创建一个
用户控件,其中包含三个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;
// ...
}
}
我将创建一个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;
// ...
}
}
事实上,这正是我计划要做的。这三个查找框将是单个用户控件(称为“描述”)的一部分,该用户控件将添加到其他几个用户控件中。所以它基本上是一个用户控件,在另一个用户控件内,在另一个用户控件内。谢谢你的回答。您的代码对我来说很有意义,但我很好奇下一个用户控件(将包含此控件)的代码是什么样子的。我的意思是,如果我有三个嵌套控件,我每次都要挖掘三层吗?实际上,这正是我计划要做的。这三个查找框将是单个用户控件(称为“描述”)的一部分,该用户控件将添加到其他几个用户控件中。所以它基本上是一个用户控件,在另一个用户控件内,在另一个用户控件内。谢谢你的回答。您的代码对我来说很有意义,但我很好奇下一个用户控件(将包含此控件)的代码是什么样子的。我的意思是,如果我有三个嵌套控件,我每次都要挖三层深吗?