1

我正在尝试从 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
4

3 回答 3

3

将您的删除更改为:

ListBox1.Items.Remove(ListBox1.Items.FindByName(item));
于 2013-01-08T16:18:19.470 回答
3

你正在迭代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
    }
}

当您尝试 from 时,您也会收到错误,Remove因为ItemListBox不允许从Enumerable您正在迭代的 an 中删除。天真地,您可以将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
}
于 2013-01-08T16:20:16.087 回答
0

ListBox1.Items 返回ListItem对象的集合。你想拥有itemtype ListItem,然后使用item.Text,或者可能item.Value

于 2013-01-08T16:19:43.183 回答