我使用以下方法将项目添加到组合框:
SqlDataReader sqlReader = sqlCmd.ExecuteReader();
while (sqlReader.Read())
{
string name = sqlReader.GetString(0);
combobox1.Items.Add(name);
}
sqlReader.Close();
conn.Close();
现在我想将这些值放在字符串列表中。这可能吗?我该怎么做?
答案 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;
}