如何在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()));
            }
        }

谁能解决我的问题?

如何在c#中获取列表框的选定值

首先,列表的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的对象(当数据绑定到DataTableDataView时)或集合中的一个类。

因为你没有告诉我们GetPredefinedDetails返回的对象类型,所以我用WhatEverClassYouUse代替它。