0

特定のリスト ボックスからどの文字列が削除されたかを認識する if ステートメントを作成したいと考えています。以下のようなifステートメントを実行して動作させることができると思いましたが、無効な引数があることがわかりました-誰かが私を案内していただければ幸いです

private void button2_Click(object sender, EventArgs e)
    {

        listBox2.Items.RemoveAt(listBox2.SelectedIndex); 
        if(listBox2.Items.RemoveAt(listBox2.SelectedItems.ToString().Equals("Test")))
        {
         picturebox.Image = null;
        }
    }
4

3 に答える 3

3

削除するSelectedItem に確認する必要があります。

private void button2_Click(object sender, EventArgs e)
{
    if (listBox2.SelectedIndex != -1)
    {
        if (listBox2.SelectedItem.ToString().Equals("Test")))
            picturebox.Image = null;

        listBox2.Items.RemoveAt(listBox2.SelectedIndex); 
    }
}

また、アイテムが実際に選択されていることを確認するためのチェックも追加しました (そうしないとエラーが発生するため)。

于 2012-06-26T17:27:18.837 に答える
1

あなたの問題は、ListBox.Items.RemoveAt(int index)を呼び出してブール値を渡していることです: listBox2.SelectedItems.ToString().Equals("Test"))

さらに、最初にアイテムを削除してからRemoveAt再度呼び出すと、実際には別のアイテム (現在そのインデックスにあるもの) が削除されるか、ListBox コレクションの範囲外にある場合は例外がスローされます。

最初に、選択したアイテムが「Test」と等しいかどうかを確認してから、次ListBoxのようにアイテムを から削除する必要があります。

private void button2_Click(object sender, EventArgs e)
{
    // SelectedIndex returns -1 if nothing is selected
    if(listBox2.SelectedIndex != -1)
    {
        if( listBox2.SelectedItem.ToString().Equals("Test") )
        {
            picturebox.Image = null;
        }
        listBox2.Items.RemoveAt(listBox2.SelectedIndex);
    }
}
于 2012-06-26T17:30:44.110 に答える
0

次のようなことをする必要があります:

    String deletedString = listBox2.Items.ElementAt(listBox2.SelectedIndex).ToString();
    listBox2.Items.RemoveAt(listBox2.SelectedIndex); 
    if(listBox2.Items.RemoveAt(deletedString == "Test"))
    {
     picturebox.Image = null;
    }

コンパイルされない可能性があります (Items に SelectedItem プロパティがあるかどうかを確認してください)。

于 2012-06-26T17:29:00.943 に答える