【问题标题】:How do I create a user control with 3 combo boxes and a different data binding for each?如何创建具有 3 个组合框和每个组合框不同的数据绑定的用户控件?
【发布时间】:2023-03-24 16:12:02
【问题描述】:

在最终决定提出这个问题之前,我进行了一些广泛的搜索。我按照 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 中使用过它们),但制作一个似乎是个好主意,因为我将在不同的地方大量使用这三个组合框我的申请。

【问题讨论】:

    标签: c# data-binding controls combobox


    【解决方案1】:

    你可以简单地用你需要的来推断你所知道的:

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

    【讨论】:

      【解决方案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;
              // ...
          }
      }
      

      【讨论】:

      • 其实,这正是我打算做的。这三个 LookupBox 将成为单个用户控件(称为“描述”)的一部分,并且该用户控件将被添加到其他几个用户控件中。所以它基本上是一个用户控件,在另一个用户控件中,在另一个用户控件中。谢谢您的回答。你的代码对我来说很有意义,但我很好奇下一个用户控件(将包含这个)的代码是什么样的。我的意思是,如果我有三个嵌套控件,我是不是每次都要深挖三层?
      猜你喜欢
      • 2012-09-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-22
      • 1970-01-01
      • 1970-01-01
      • 2013-06-15
      • 2012-02-28
      • 1970-01-01
      相关资源
      最近更新 更多