0

ページに 3 つの ListBox があります。ListBox から選択した項目を 1 つ削除したい。ListBox1 では問題なく動作しますが、他の ListBox からアイテムを選択して削除をクリックすると、常に最初のアイテムが削除されます。

 protected void Button4_Click(object sender, EventArgs e)
    {
        if (ListBox1.SelectedIndex != -1)
        {
            ListBox1.Items.Remove(ListBox1.SelectedItem);
        }
        else if (ListBox2.SelectedIndex != -1)
        {
            ListBox2.Items.Remove(ListBox2.SelectedItem);
        }
        else if (ListBox3.SelectedIndex != -1)
        {
            ListBox3.Items.Remove(ListBox3.SelectedItem);
        }
    }
4

3 に答える 3

3

それは、あなたのステートメントの残りの部分があなたのステートメントによって到達されていないためelse ifです。

これを試して:

protected void Button4_Click(object sender, EventArgs e)
{
        if (ListBox1.SelectedIndex != -1)
            ListBox1.Items.Remove(ListBox1.SelectedItem);

        if (ListBox2.SelectedIndex != -1)
            ListBox2.Items.Remove(ListBox2.SelectedItem);

        if (ListBox3.SelectedIndex != -1)
            ListBox3.Items.Remove(ListBox3.SelectedItem);
}
于 2013-11-06T16:34:44.837 に答える
1

ListBox アイテムを削除する場合は、現在のコードで、選択された Items のすべての ListBox を常にチェックする必要があります。最初の ListBox が選択されていない場合、if-else を書いたように残りの ListBox をチェックすることさえできません。ブロック 。

したがって、次のように変更します。

protected void Button4_Click(object sender, EventArgs e)
        {
            if (ListBox1.SelectedIndex != -1)
            {
                ListBox1.Items.Remove(ListBox1.SelectedItem);
            }
            if (ListBox2.SelectedIndex != -1)
            {
                ListBox2.Items.Remove(ListBox2.SelectedItem);
            }
            if (ListBox3.SelectedIndex != -1)
            {
                ListBox3.Items.Remove(ListBox3.SelectedItem);
            }
        }
于 2013-11-06T16:32:56.800 に答える