我的应用程序中有两个不同的列表。每个用于组合框和列表框。我使用下面的可重用代码在控件中插入项目。现在,我正在使用两种不同的功能。组合框和列表框是否有任何通用类,以便我可以在一个函数中完成我的工作?
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);
}
}
}
答案 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)
ListBox
和ComboBox
类都来自共同的祖先,即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);
}
}
}