gpt4 book ai didi

c# - 使用上下文菜单 c# 删除列表框的项目

转载 作者:太空宇宙 更新时间:2023-11-03 23:03:11 25 4
gpt4 key购买 nike

所以我的程序中有一个列表框,我希望用户能够通过访问其上下文菜单并单击删除来删除其中的特定项目。如果我按顺序删除它的项目(从最上面的项目到最后一个项目),一切似乎都工作正常。但是,当我没有按顺序删除项目时,出现调试错误。我想知道如何删除我选择的项目。

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

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”的未处理异常附加信息:索引超出数组范围。

最佳答案

listBox.SelectedIndex 返回所选项目的集合。由于用户只选择了一个项目,因此该集合只有一个索引为 0 的项目。尝试删除索引为非零的项目将导致错误。使用 listBox.Items.RemoveAt(index) 代替:

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

关于c# - 使用上下文菜单 c# 删除列表框的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42331683/

25 4 0