【问题标题】:C# listview1 throws error after first selectionC# listview1 在第一次选择后抛出错误
【发布时间】:2018-02-11 18:37:13
【问题描述】:

在我的 Windows 窗体上,我有一个列表视图控件,并且我有一个

的事件处理程序
private void listView1_SelectedIndexChanged(object sender, EventArgs e)

问题是在第一次选择之后我收到一条错误消息:

System.ArgumentOutOfRangeException: 'InvalidArgument=Value of '0' is not vaild for 'index'. Parameter name:index'

这是完整的代码:

private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
      MessageBox.Show(listView1.SelectedItems[0].Text);
}

此代码允许一个选择显示在消息框中,但下一个选择出现上述错误。关于如何解决这个问题的任何想法?

【问题讨论】:

    标签: c# winforms listview


    【解决方案1】:

    在这种情况下,您的数据源或列表的长度很重要,您可以在不知道这一点的情况下检查事件中的长度。错误说; SelecteItems 里面没有任何项目。当您尝试选择列表的 0 索引时,它会抛出该列表在索引 0 处没有任何项目。

    private void listView1_SelectedIndexChanged(object sender, EventArgs e)
    {   
         if(listView1.SelectedItems.Count > 0){
            MessageBox.Show(listView1.SelectedItems[0].Text);
         }
    }
    

    希望有帮助,

    【讨论】:

      【解决方案2】:

      在检索所选项目之前检查所选项目计数。

      private void listView1_SelectedIndexChanged(object sender, EventArgs e)
      {
            if(listView1.SelectedItems.Count > 0)
               MessageBox.Show(listView1.SelectedItems[0].Text);
      }
      

      【讨论】:

        【解决方案3】:

        是的,这就是答案,谢谢!

        private void listView1_SelectedIndexChanged(object sender, EventArgs e)
        {
              if(listView1.SelectedItems.Count > 0)
                 MessageBox.Show(listView1.SelectedItems[0].Text);
        }
        

        【讨论】:

          猜你喜欢
          • 2023-03-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-11-20
          • 2017-02-07
          • 2023-03-30
          • 2013-09-17
          相关资源
          最近更新 更多