[英]i can't remove the index in list box
I'm trying to remove to selected index in my Listbox but I get an error:我正在尝试删除列表框中选定的索引,但出现错误:
System.ArgumentOutOfRangeException: Index was out of range. System.ArgumentOutOfRangeException:索引超出范围。 Must be non-negative and less than the size of the collection.必须为非负数且小于集合的大小。 (Parameter 'index') (参数“索引”)
Please help me, I'm a newbie to C#.请帮助我,我是C#的新手。
public void listBoxName_SelectedIndexChanged(object sender, EventArgs e)
{
int index = listBoxName.SelectedIndex;
labelName.Text = clients[index].Name;
labelAge.Text = clients[index].Age.ToString();
labelPhone.Text = clients[index].Phone;
labelAddress.Text = clients[index].Address;
}
private void buttonClearFields_Click(object sender, EventArgs e)
{
textBoxName.Text = "";
textBoxAge.Text = "";
textBoxPhone.Text = "";
textBoxAddress.Text = "";
}
private void buttonRemove_Click(object sender, EventArgs e)
{
listBoxName.Items.RemoveAt(listBoxName.SelectedIndex);
}
int index = listBoxName.SelectedIndex;
if (index < 0 || index > clients.Length) return;
listBoxName.Items.RemoveAt
requires the passed index to be in the range 0..(n-1) , where n is the number of items currently in listBoxName
. listBoxName.Items.RemoveAt
要求传递的索引在0..(n-1)范围内,其中n是当前在listBoxName
中的项目数。
It looks like in your case listBoxName.SelectedIndex
returns a negative value.在您的情况下, listBoxName.SelectedIndex
看起来像是返回负值。
It could be either because listBoxName
is empty, or it contains items but none is selected.这可能是因为listBoxName
是空的,或者它包含项目但没有被选中。
A possible fix would be:一个可能的解决办法是:
private void buttonRemove_Click(object sender, EventArgs e)
{
int selIdx = listBoxName.SelectedIndex;
if (selIdx < 0 || selIdx >= listBoxName.Items.Count) return;
listBoxName.Items.RemoveAt(selIdx);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.