添加工具箱项作为参数

时间:2015-03-09 13:20:19

标签: c#

您好我正在编写一个来自数据库的IO程序,我有以下函数从数据库中读取并将行添加到组合框中:

private void loadFromTuzel()
    {
        string constring = "Server=localhost;Database=ozturk;Uid=____;pwd=_____";
        MySqlConnection newCon = new MySqlConnection(constring);
        string selectCommand = "SELECT * FROM ozturk.tuzelkisi";

        MySqlCommand cmd = new MySqlCommand(selectCommand, newCon);

        MySqlDataReader myReader;
        newCon.Open();
        myReader = cmd.ExecuteReader();
        while (myReader.Read())
        {

            cbselected.Items.Add(myReader["name"].ToString() + " " + myReader["Surname"].ToString());
        }
    }

从代码中可以看出程序将数据从数据库加载到组合框......

我需要以不同的形式使用此函数,但需要将数据加载到不同的组合框中,我想知道是否可以将工具箱项作为参数添加到我的函数中,这样就可以了像这样

private void myfunction(thecombobox parameter comes here)
{
  // The execution code and than
  // thecomboboxparameter.items.add......
}

所以我可以通过添加参数值一遍又一遍地使用这个函数,这是可能的吗?

由于

1 个答案:

答案 0 :(得分:0)

是的,这是可能的,但是你可以通过完全在UI代码之外移动逻辑来更好地适应,并且只需从数据库中返回项目。不要将ComboBox传递给参数,而是从该方法获取结果,然后在UI中将所有内容绑定在一起。

这是分离关注的基础。您的ComboBoxes不应该关心数据来自何处。他们只关心他们有数据显示。

对于问题的简单回答,只需按照以下方式调整方法:

public static class Utilities 
{
    public static void loadFromTuzel(ComboBox cbo)
    {
        /// All of you other logic
        while (myReader.Read())
        {
            cbo.Items.Add(myReader["name"].ToString() + " " + 
                myReader["Surname"].ToString());
        }
    }
}

如果您关注SoC,那么您将拥有以下内容:

public class Repository {
    public IEnumerable<string> GetNamesFromTuzel()
    {
        // All of the same logic
        while (myReader.Read())
        {
            yield return myReader["name"].ToString() + " " + 
                myReader["Surname"].ToString();
        }
    }
}