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);-Webサービスが具体的に受信しようとしているために壊れ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
    }
}

また、繰り返し処理しているものから削除することは許可されていないためRemoveItemからしようとするとエラーが発生します。素朴に、あなたはその問題を解決するためにあなたのループをループに切り替えることができます。ListBoxEnumerableforeachfor

このコードは、「キャストできません」エラーを削除および修正するために機能するはずです。

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オブジェクトのコレクションを返します。itemタイプを設定してから、、または場合によってListItemはを使用する必要があります。item.Textitem.Value

于 2013-01-08T16:19:43.183 に答える