寻求组合框的普通课程&列表框以减少代码

时间:2016-12-19 09:38:32

标签: c# winforms visual-studio

我的应用程序中有两个不同的列表。每个用于组合框和列表框。我使用下面的可重用代码在控件中插入项目。现在,我正在使用两种不同的功能。组合框和列表框是否有任何通用类,以便我可以在一个函数中完成我的工作?

public void AddItemsComboBox(ComboBox combobox, List<string> list)
    {
        foreach (string s in list)
        {
            if (!combobox.Items.Contains(s))
            {
                combobox.Items.Add(s);
            }
        }
    }

    public void AddItemsListBox(ListBox listbox, List<string> list)
    {
        foreach (string s in list)
        {
            if (!listbox.Items.Contains(s))
            {
                listbox.Items.Add(s);
            }
        }
    }

2 个答案:

答案 0 :(得分:1)

如果方法相同,则可以使用动态控件。

public void AddItems(dynamic control, List<string> list)
{
    foreach (string s in list)
        if (!control.Items.Contains(s))
            control.Items.Add(s);
}

答案 1 :(得分:0)

ListBoxComboBox类都来自共同的祖先,即ListControl。不幸的是,这不是定义Items属性的地方,所以我能想到的最好的东西需要进行一些运行时类型检查:

public void AddItems(ListControl lb, List<string> list)
{
    ListBox listBox = lb as ListBox;
    ComboBox comboBox = lb as ComboBox;
    foreach (string s in list)
    {
        if (listBox != null && !listBox.Items.Contains(s))
        {
            listBox.Items.Add(s);
        }
        else if (comboBox != null && !comboBox.Items.Contains(s))
        {
            comboBox.Items.Add(s);
        }
    }
}