C#:使用ListView.SelectedItems [0]后选择不同项目时出现问题

时间:2009-05-03 15:49:18

标签: c# .net winforms

我遇到问题,我使用listview ListView.SelectedItems [0]中的方法将当前选定的ListViewItem返回到函数中的参数,该函数在选中时将项目文本显示在文本框中。此方法设置为Listview_SelectedIndexChanged事件。问题是,当我之前选择了一个不同的项目时,会出现一个错误,即

ArgumentOutOfRangeException未处理 InvalidArgument =值'0'对'index'无效 参数名称:索引

当我想从列表视图中返回下一个当前选定的项目时,为什么会导致该错误?只有在事先选择了另一个项目之后才会发生这种情况。

以下是活动:

    private void lvMyItems_SelectedIndexChanged(object sender, EventArgs e)
    {
        // Return currently selected item.
        ShowItem(lvMyItems.SelectedItems[0]); // The error occurs here.
    }

以下是它正在调用的方法:

    private void ShowItem(ListViewItem MyItem)
    {
        // This method inputs the text and subitem text of my listview item into two textboxes.
        txtItemName.Text = MyItem.Text;
        txtItemNickName.Text = MyItem.SubItems[1].Text;
    }

2 个答案:

答案 0 :(得分:4)

“没有选择”也是一种可能的状态。在访问索引0处的项目之前,请确保SelectedItems.Count >= 1

答案 1 :(得分:1)

我第二次点击某个项目时发现此问题。

第一次点击效果很好,但第二次点击会导致异常。我认为这是因为当我们点击另一个项目时,程序会清除第一个项目的“选择状态”,并将第二个项目标记为“已选择”。在将第二个项目标记为“已选择”之前,程序将处于ListView中没有选择项的情况下,这很可能是程序生成异常的原因。

所以我们需要检查SelectedItems.Count >= 1