从C#窗体中的列表框中获取多个值

时间:2013-12-19 06:46:35

标签: c# sql winforms

我有一个列表框,它从sql表中提取数据。我将其选择模式设置为multisimple。

每个项目的显示成员都设置为sql表中的Name字段,每个项目的value成员设置为sql表中的ID字段。

当我从列表中选择多个项目时,如何获取多个值?我可以使用listboxname.Text获取一个项目的文本,但我不知道如何获取一次全部选中的每个值。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

使用SelectedItems属性,以下内容将获得代表所选项目的List<string>

var items = listBox1.SelectedItems.Cast<object>()
                    .Select(x=>Convert.ToString(x)).ToList();

要获取确切的值(ID),它取决于基础项类型。如果对{list}使用DataTable作为DataSource,则基础项类型为DataRowView,因此获取值ID的代码应为:

var ids = listBox1.SelectedItems.Cast<DataRowView>()
                  .Select(row=>row.Row.Field<string>("ID")).ToList();
//suppose the ID field is string

如果基础项类型只是具有2个属性Name和ID的普通类,例如调用它Item,则代码更简单:

var ids = listBox1.SelectedItems.Cast<Item>()
                  .Select(item=>item.ID).ToList();

答案 1 :(得分:0)

方法1:您可以使用SelectedIndices的{​​{1}}属性来获取所有选定项ListBox值。 然后,对于每个选定的索引,您可以获得项目的Index

试试这个:

Value

注意:列表 private void button1_Click(object sender, EventArgs e) { List<String> SelectedItems=new List<String>(); foreach (int i in listBox1.SelectedIndices) { SelectedItems.Add(listBox1.Items[i].ToString()); } } 包含SelectedItems

中的所有SelectedItems

方法2: 您可以使用ListBox的{​​{1}}属性直接获取所有选定的项目值。

试试这个:

SelectedItems

注意:列表ListBox包含 private void button1_Click(object sender, EventArgs e) { List<String> SelectedItems=new List<String>(); foreach (String s in listBox1.SelectedItems) { SelectedItems.Add(s); } }

中的所有SelectedItems