简体   繁体   English

我无法删除列表框中的索引

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM