C# 删除列表框';使用上下文菜单c创建项目#

C# 删除列表框';使用上下文菜单c创建项目#,c#,winforms,listbox,contextmenu,C#,Winforms,Listbox,Contextmenu,因此,我的程序中有一个列表框,我希望用户能够通过访问其上下文菜单并单击“删除”来删除其中的特定项。如果我按顺序删除它的项目(从顶部项目到最后一个项目),一切看起来都很好。但是,如果不按顺序删除项目,则会出现调试错误。我想知道如何删除我选择的项目 这是用户右键单击列表框中的项目后将执行的代码: public void listBox_MouseDown(object sender, MouseEventArgs e) { if (e.Button == System.Windows.For

因此,我的程序中有一个列表框,我希望用户能够通过访问其上下文菜单并单击“删除”来删除其中的特定项。如果我按顺序删除它的项目(从顶部项目到最后一个项目),一切看起来都很好。但是,如果不按顺序删除项目,则会出现调试错误。我想知道如何删除我选择的项目

这是用户右键单击列表框中的项目后将执行的代码:

public void listBox_MouseDown(object sender, MouseEventArgs e)
{
    if (e.Button == System.Windows.Forms.MouseButtons.Right)
    {
        index = listBox.IndexFromPoint(e.Location);
        {
            if (index == listBox.SelectedIndex)
            {
                contextMenuStrip1.Show(); 
            }
        }
    }
}
这是单击事件处理程序:

private void deleteToolStripMenuItem1_Click(object sender, EventArgs e)
{
    listBox.Items.Remove(listBox.SelectedItems[index]);
}
这是来自IDE的错误消息: System.Windows.Forms.dll中发生“System.IndexOutOfRangeException”类型的未处理异常
其他信息:索引超出了数组的边界。

列表框。SelectedIndex
返回选定项的集合。由于用户仅选择一个项,因此此集合只有一个索引为0的项。尝试删除索引非零的项将导致错误。改用
listBox.Items.RemoveAt(index)

private void deleteToolStripMenuItem1_Click(object sender, EventArgs e)
{
    listBox.Items.RemoveAt(index);
}

错误信息是什么?您需要一个可观察的集合吗?