如何通过DataSet填充多个控件?

时间:2012-06-28 10:24:47

标签: c# winforms combobox dataset

我有5个ComboBox,并希望用相同的DataSet填充它们

foreach (Control c in panPrev.Controls)
{
    if ((string)c.Tag == "cb") //these are ComboBoxes
    {
        c.DataSource = ds01.Tables[0];
        c.DisplayMember = "cars";
    }
}

错误1:'System.Windows.Forms.Control'不包含'DataSource'的定义...

错误2:'System.Windows.Forms.Control'不包含'DisplayMember ..

的定义

请帮助。

2 个答案:

答案 0 :(得分:4)

你必须将它们转换为ComboBox,无论如何,我会使用Enumerable.OfType方法:

var combos = panPrev.Controls.OfType<ComboBox>();
foreach (var combo in combos)
{
    combo.DataSource = ds01.Tables[0];
    combo.DisplayMember = "cars";
}

Enumerable.OfType按类型过滤控件并相应地转换它们。

请注意,您需要添加using System.Linq;

答案 1 :(得分:1)

你必须把它投射到ComboBox,如下所示:

foreach (Control c in panPrev.Controls)
{
    if (c is ComboBox) 
    {
        (c as ComboBox).DataSource = ds01.Tables[0];
        (c as ComboBox).DisplayMember = "cars";
    }
}