【发布时间】:2019-12-05 13:50:17
【问题描述】:
我有 3 个列表框,当我选择了三个内容并单击删除按钮时,它删除了第一个列表框中的文本,但随后给出了一个异常,指出 -1 的值对索引无效。这是我当前的代码:
lstBoxOne.Items.RemoveAt(lstBoxOne.SelectedIndex);
lstBoxTwo.Items.RemoveAt(lstBoxTwo.SelectedIndex);
lstBoxThree.Items.RemoveAt(lstBoxThree.SelectedIndex);
想知道他们是否有一种方法可以通过单击按钮来删除所有三个选定的文本
编辑:我现在已经把完全期待的形象 Full exception
编辑 2:这是一个完整代码的示例
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void LstBoxOne_SelectedIndexChanged(object sender, EventArgs e)
{
var deleteD = lstBoxOne.SelectedIndex;
lstBoxTwo.SelectedIndex = deleteD;
lstBoxThree.SelectedIndex = deleteD;
}
private void BtnInsert_Click(object sender, EventArgs e)
{
lstBoxOne.Items.Add(this.txtOne.Text);
lstBoxTwo.Items.Add(this.txtTwo.Text);
lstBoxThree.Items.Add(this.txtThree.Text);
this.txtOne.Focus();
this.txtOne.Clear();
this.txtTwo.Focus();
this.txtTwo.Clear();
this.txtThree.Focus();
this.txtThree.Clear();
}
private void BtnDelete_Click(object sender, EventArgs e)
{
lstBoxOne.Items.RemoveAt(lstBoxOne.SelectedIndex);
lstBoxTwo.Items.RemoveAt(lstBoxTwo.SelectedIndex);
lstBoxThree.Items.RemoveAt(lstBoxThree.SelectedIndex);
}
private void LstBoxTwo_SelectedIndexChanged(object sender, EventArgs e)
{
var deleteD = lstBoxTwo.SelectedIndex;
lstBoxOne.SelectedIndex = deleteD;
lstBoxThree.SelectedIndex = deleteD;
}
private void LstBoxThree_SelectedIndexChanged(object sender, EventArgs e)
{
var deleteD = lstBoxThree.SelectedIndex;
lstBoxOne.SelectedIndex = deleteD;
lstBoxTwo.SelectedIndex = deleteD;
}
}
}
}
【问题讨论】:
-
因为您删除了该项目然后尝试获取引用,所以 selectedindex 将更改为 -1 如果它只有 1.... 您需要记住数字,或者从末尾开始做 lisbox3,然后 2,然后 1
-
@BugFinder 你是什么意思从最后开始?像这样放代码?对不起,如果我问简单的问题' lstBoxThree.Items.RemoveAt(lstBoxThree.SelectedIndex) lstBoxTwo.Items.RemoveAt(lstBoxTwo.SelectedIndex); lstBoxOne.Items.RemoveAt(lstBoxOne.SelectedIndex);'
-
是的,正如我所说.. listbox3 然后 2 然后 1
-
@BugFinder 这不起作用,我仍然遇到同样的错误。如果您能帮助我更多,将不胜感激。谢谢!
-
只要您在三个
ListBoxes 中分别选择了一个项目,您发布的代码就会按预期工作。这意味着异常发生在您没有向我们展示的代码中。如果我是一个赌徒,我会说你可能有一个SelectedIndexChanged事件正在触发,而不是检查SelectedIndex是否大于-1,但你需要向我们展示你所有的代码,最好是可以肯定的是整个例外。