【发布时间】:2023-03-20 14:02:02
【问题描述】:
嗨,在这个网站上,我发现了如何删除 checklistbox 中的多个复选框对象
How to delete multiple checked items from CheckedListBox?
但这对我不起作用。
我之前处理这个项目的合作伙伴在我之前在 Global.answer 类中保存了一些东西。我曾尝试像这样修改该脚本:
for (int i = checkedListBoxAnswers.Items.Count - 1; i >= 0; i--) {
if (checkedListBoxAnswers.GetItemCheckState(i) == CheckState.Checked)
{
Global.answers.RemoveAt(checkedListBoxAnswers.SelectedIndex);
}
}
它可以正确删除一个复选框,但是当我检查两个或多个复选框时,它就出错了... 我想知道如何正确地做到这一点。
这是我的删除按钮
private void buttonDelete_Click(object sender, EventArgs e)
{
if (checkedListBoxAnswers.SelectedIndices.Count < 1)
{
MessageBox.Show(this, "Please select answer to be deleted");
}
else
{
for (int i = checkedListBoxAnswers.Items.Count - 1; i >= 0; i--)
{
if (checkedListBoxAnswers.GetItemCheckState(i) == CheckState.Checked)
{
Global.answers.RemoveAt(checkedListBoxAnswers.SelectedIndex);
}
}
updateCheckListBoxAnswers();
}
}
【问题讨论】:
-
您有什么保证
Global.answers中的项目顺序与CheckedListBox中的项目顺序一致?删除它们后,这对列表框有什么影响?我没有看到您从CheckedListBox中删除任何内容。而且您使用SelectedIndex反复删除,这不会在整个循环中改变。 -
@DonBoitnott 这很简单,因为如果我不包括 Global.answer....在我使用 Global.answer 的脚本中,我可以删除任何复选框,如果我检查了两个或更多复选框,它可以删除与选中相同的数量,但出错删除...我猜你是对的,selectedIndex 中的问题...如果你有解决它的想法,它会有所帮助
-
checkedListBoxAnswers和Global.answers中的项目是什么?它们中是否有任何唯一键可用于根据checkedListBoxAnswers而不是索引来识别Global.answers中的正确项目? -
@DamirArh 我用几个关键字搜索...我在“checkedListBoxAnswer”和“Global.answer”之间找不到任何相关项目
标签: c# checkbox checkboxlist