无法将ListItem类型的对象强制转换为String

时间:2013-01-08 16:16:34

标签: c# web-services loops

我正在尝试从ListBox中删除特定项目,但是我收到了一个强制转换错误。 它似乎不喜欢我将ListBox中的项称为string项的事实。

if (CheckBox1.Checked == true)
        {
            foreach (string item in ListBox1.Items)
            {
                WebService1 ws = new WebService1();
                int flag = ws.callFlags(10, item); 

                if (flag == 1)
                {
                    ListBox1.Items.Remove(item);
                }
            }
        }

错误 -

Unable to cast object of type 'System.Web.UI.WebControls.ListItem' to type 'System.String'.

我该如何解决这个问题?

修改

我的问题是,当我更改(ListItem item in ListBox1.Items)(我曾尝试过)的方法时,行int flag = ws.callFlags(10, item);会中断,因为网络服务正在寻求专门接收string。然后给出错误 -

Error   2   Argument 2: cannot convert from 'System.Web.UI.WebControls.ListItem' to 'string'
Error   1   The best overloaded method match for 'testFrontEnd.WebService1.callFlags(int, string)' has some invalid arguments

3 个答案:

答案 0 :(得分:2)

将您的删除更改为:

ListBox1.Items.Remove(ListBox1.Items.FindByName(item));

答案 1 :(得分:2)

你正在迭代ListItems,所以你应该这样做:

foreach( ListItem item in ListBox1.Items){
    WebService1 ws = new WebService1();
    int flag = ws.callFlags(10, item.Text); // <- Changed to item.Text from item

    if (flag == 1)
    {
        ListBox1.Items.Remove(item); // <- You'll have an issue with the remove
    }
}

当您尝试从Remove Item ListBox时,您也会收到错误,因为您不能从Enumerable移除您正在迭代。天真地,您可以将foreach循环切换为for循环来解决该问题。

此代码应该可以删除并修复“无法投射”错误。

for(int i = 0; i < ListBox1.Items.Count; i++)
{
    ListItem item = ListBox1.Items[i];
    WebService1 ws = new WebService1();
    int flag = ws.callFlags(10, item.Text);

    if (flag == 1)
    {
        ListBox1.Items.Remove(item); 
    }
}

最后一点;你的WebService1似乎是一个自定义类,让它实现IDisposable接口并将其包装在using子句中可能是一个好主意,这样你就可以确定它是使用后妥善处理。

public class WebService1 : IDisposable { // ... 

using (WebService1 ws = new WebService1())
{ 
    // Code from inside your for loop here
}

答案 2 :(得分:0)

ListBox1.Items返回ListItem个对象的集合。您希望item属于ListItem类型,然后使用item.Text,或者item.Value