如何在c#中获取列表框的选定值
本文关键字:列表 获取 | 更新日期: 2023-09-27 18:16:30
我绑定了一个列表框,其中列表框的数据源是list。如何获取列表框中所选列表项的选中值?我的示例代码如下
pdfList = attendanceDetailsPresenter.GetPredefinedDetails();
this.lstCompanies.DataSource = pdfList;
this.lstCompanies.DisplayMember = "CompanyName";
this.lstCompanies.ValueMember = "CompID";
this.lstDepartments.BindingContext = new BindingContext();
this.lstDepartments.DataSource = pdfList;
this.lstDepartments.DisplayMember = "DepartmentName";
this.lstDepartments.ValueMember = "DeptID";
if (lstCompanies.SelectedItems.Count < 0)
{
MessageBox.Show("Please Select Any one Company");
return attendanceCalculationDetailsDataList;
}
else
{
for (int i = 0; i < lstCompanies.SelectedItems.Count; i++ )
{
attendanceCalculationDetailsData.CompanyID.Add(int.Parse(lstCompanies.SelectedValue.ToString()));
}
}
谁能解决我的问题?
首先,列表的Count
永远不能小于零。总是>= 0
然后,当你数据绑定你的列表时,项目通常是DataRowView
类型的(你应该能够通过调试你的应用程序来验证)。如果这是正确的,您应该将每个选定的项目强制转换为DataRowView
,然后将其Row
属性的值强制转换为您期望的类型。
我刚刚注意到,在下面的循环中,您甚至没有使用选定的项目,而总是使用SelectedValue
:
for (int i = 0; i < lstCompanies.SelectedItems.Count; i++ )
{
attendanceCalculationDetailsData.CompanyID.Add(int.Parse(lstCompanies.SelectedValue.ToString()));
}
尝试将其更改为:
for (int i = 0; i < lstCompanies.SelectedItems.Count; i++ )
{
attendanceCalculationDetailsData.CompanyID.Add(((<WhatEverClassYouUse>)lstCompanies.SelectedItems[i]).CompanyID);
}
说明:如果列表中有多个项目被选中,这些项目将被添加到SelectedItems
集合中。您可以迭代这些项。每个项目都是DataRowView
的对象(当数据绑定到DataTable
或DataView
时)或集合中的一个类。
因为你没有告诉我们GetPredefinedDetails
返回的对象类型,所以我用WhatEverClassYouUse
代替它。