我在获取列表框上的选定项目时遇到“无法投射”错误

时间:2016-03-30 10:12:26

标签: c# visual-studio listbox

我只在运行时遇到这些错误,我正在使用Visual Studio。

  

类型'System.InvalidCastException

的未处理异常      

其他信息:无法将类型为“System.String”的对象强制转换为“System.Web.UI.WebControls.ListItem”。

 private void btnRunReport_Click(object sender, EventArgs e)
 {
     rptTopBottom.selDepartment = GetDepartments();
 }

 private string GetDepartments()
 {
     string selDept = "";
     foreach (ListItem li in listDepartment.Items)
     {
         if (li.Selected)
         {
             selDept += li.Value + ',';
         }
     }
     selDept = selDept.Substring(0, selDept.Length - 1);
     return selDept;
 }

1 个答案:

答案 0 :(得分:1)

异常消息

  

无法将'System.String'类型的对象强制转换为'System.Web.UI.WebControls.ListItem'。

表示此行

foreach (ListItem li in listDepartment.Items)

失败,因为listDepartment.Items似乎包含string类型的元素,而不是类型System.Web.UI.WebControls.ListItem

您正在使用System.Windows.Forms.ListBox。此列表框“Items属性是一个对象集合,其中包含您添加的对象。它不包含System.Web.UI.WebControl.ListItem s。

您应该使用ListBox.SelectedItems属性:

foreach (string s in listDepartment.SelectedItems)
    selDept += s + ',';