如何将组合框项目放在列表中?

时间:2016-07-11 12:52:15

标签: c# sql-server wpf combobox

我使用以下方法将项目添加到组合框:

SqlDataReader sqlReader = sqlCmd.ExecuteReader();
while (sqlReader.Read())
{
    string name = sqlReader.GetString(0);
    combobox1.Items.Add(name);
}
sqlReader.Close();
conn.Close();

现在我想将这些值放在字符串列表中。这可能吗?我该怎么做?

5 个答案:

答案 0 :(得分:6)

只需要做一些像

这样的事情
string[] items = new string[combobox1.Items.Count];  

 for(int i = 0; i < combobox1.Items.Count; i++)
   {
       items[i] = combobox1.Items[i].ToString();
   }

或者如果想直接从阅读器对象创建字符串列表而不是

var itemList=new List<string>();
SqlDataReader sqlReader = sqlCmd.ExecuteReader();
                while (sqlReader.Read())
                {

                    string name = sqlReader.GetString(0);
                    combobox1.Items.Add(name);
                    itemList.Add(name);
                }
                sqlReader.Close();
                conn.Close();
            }

使用LINQ将使您的工作变得更加轻松

var arr = combobox1.Items.Cast<Object>()
      .Select(item => item.ToString()).ToArray();

答案 1 :(得分:2)

private List<string> ComboBoxList = new List<string>();

在您当前所使用的方法之外创建此。此列表允许您在类中的任何方法中使用它。

private List<string> ComboBoxList;

或尝试使用此代码而不是顶部的代码。他们都工作。

SqlDataReader sqlReader = sqlCmd.ExecuteReader();
                while (sqlReader.Read())
            {

                string name = sqlReader.GetString(0);
                combobox1.Items.Add(name);
                comboBoxList.Add(name);
            }
            sqlReader.Close();
            conn.Close();
        }

创建一个新列表并将每个名称添加到列表中。

答案 2 :(得分:1)

我敢肯定还有一种更优雅的方法,但这有效

List<string> values = this.ComKeyType.Items
                      .Cast<object>()
                      .Select(x => x.ToString().Split('=')[1].Replace(" }", "").Trim())
                      .ToList();

答案 3 :(得分:0)

你可能想要这个:

List<String>  cbList = new List<String>();

var lstItems= ComboBox1.Items.Cast<Object>()
          .Select(item => item.ToString()).ToList();

cbList.Add(lstItems); 

答案 4 :(得分:0)

您确实需要在代码中分离关注点以使其可维护。

如果要将列表绑定到组合框,可以在XAML中执行:

<ComboBox ItemsSource="{Binding MyList}" SelectedItem="{Binding CurrentItem}" />

您最好在视图模型中创建一个ObservableCollection属性:

public ObservableCollection<string> MyList {get; private set;}

并在视图模型的构造函数中初始化它:

MyList = new ObservableCollection<string>(GetNames());

GetNames()这里是封装SQL代码的方法:

private List<string> GetNames() {
    var myList = new List<string>();
    SqlDataReader sqlReader = sqlCmd.ExecuteReader();
    while (sqlReader.Read())
        {
            string name = sqlReader.GetString(0);
            myList.Add(name);
        }
    sqlReader.Close();
    conn.Close();

    return myList;
}