【问题标题】:Bind multiple ComboBox on a form C#在表单上绑定多个 ComboBox C#
【发布时间】:2010-10-27 15:02:56
【问题描述】:

这似乎是一项简单的任务,但可能有更简单的方法。

我有一个包含 30 个组合框的表单,它们都需要相同的数据集。目前我绑定每一个:

DataTable t = GetData();

this.ComboBox1.DataSource = t;
this.ComboBox1.DisplayMember = "heading";

this.ComboBox2.DataSource = t;
this.ComboBox2.DisplayMember = "heading";

this.ComboBox3.DataSource = t;
this.ComboBox3.DisplayMember = "heading";

...
...

this.ComboBoxN.DataSource = t;
this.ComboBoxN.DisplayMember = "heading";

有没有办法以一种不那么乏味的方式将它们全部绑定在一起?

谢谢。

【问题讨论】:

    标签: c# winforms data-binding combobox


    【解决方案1】:
    foreach (var control in this.Controls)
    {
        if (control is (ComboBox))
        {
            ((ComboBox)control).DataSource = t;
            ((ComboBox)control).DisplayMember = "heading";
        }
    }
    

    【讨论】:

    • 听起来不错......除非不是所有的组合框都绑定到同一个集合(即,如果有 33 个组合框,其中 3 个没有绑定到同一个控件) .在这种情况下,我会将绑定到同一源的 30 个包装在某种容器中,例如 FlowLayoutPanel 或其他一些面板类型的控件。
    • @Steve 如果这是您要查找的内容,则应使用复选标记将答案标记为已接受。
    • 尽快。它说我必须等待 4 分钟。
    【解决方案2】:
    private void bindIt(ComboBox c)
    {
        c.DataSource = t;
        c.DisplayMember = "heading";
    }
    
    private void bindThemAll()
    {
        bindIt(this.ComboBox1);
        bindIt(this.ComboBox2);
        bindIt(this.ComboBox3);
        ...
        bindIt(this.ComboBoxN);
    }
    

    这样,您就不会冒绑定任何应该被绑定的控件的风险。是的,有很多重复,但是....

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多