如何使用相同的代码分解2个不同的ComboBox?

时间:2016-07-04 08:02:12

标签: c# .net

有些东西让我讨厌,但我不知道如何解决它。这是代码:

    public static void FillComboBox(ComboBox cb, DataTable dt)
    {
        cb.Items.Clear();
        foreach (DataRow row in dt.Rows)
        {
            cb.Items.Add(row[0].ToString());
        }
    }

    public static void FillComboBoxColumn(DataGridViewComboBoxColumn col, DataTable dt)
    {
        col.Items.Clear();
        foreach(DataRow row in dt.Rows)
        {
            col.Items.Add(row[0].ToString());
        }
    }

这是相同的代码,但有两个不同的对象作为ComboBox。我无法看到如何对其进行分解,这可能非常简单。你能给我一个优势吗?

谢谢

2 个答案:

答案 0 :(得分:4)

public static void FillCollection(IList collection, DataTable dt)
{
    collection.Clear();
    foreach (DataRow row in dt.Rows)
    {
        collection.Add(row[0].ToString());
    }
}

public static void FillComboBox(ComboBox cb, DataTable dt)
{
    FillCollection( cb.Items, dt );
}

public static void FillComboBoxColumn(DataGridViewComboBoxColumn col, DataTable dt)
{
    FillCollection( col.Items, dt );
} 

答案 1 :(得分:0)

您还可以为自己的实现覆盖ComboBox和DataGridViewComboBoxColumn。发布但喜欢Sir Rufo的答案更好。但是如果你想添加更多的自定义代码,这是一种方法。

{{1}}