我有一个列表框,它从sql表中提取数据。我将其选择模式设置为multisimple。
每个项目的显示成员都设置为sql表中的Name字段,每个项目的value成员设置为sql表中的ID字段。
当我从列表中选择多个项目时,如何获取多个值?我可以使用listboxname.Text获取一个项目的文本,但我不知道如何获取一次全部选中的每个值。
非常感谢任何帮助。
答案 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
方法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);
}
}