private void listView1_SelectedIndexChanged(object sender, System.EventArgs e)
         {
MessageBox.Show(listView1.SelectedItems[0].SubItems[0].Text);
}以上代码在执行后第一次鼠标点击时沒有错误,后面的几次点击为什么都报错,是什么原因呢?
难道鼠标第二次点击时先触发取消选中再触发选中事件吗?有什么解决方法?

解决方案 »

  1.   

    报什么错呢?是不是你选择的那个Item没有SubItems呢?最大的可能就是这个了.
      

  2.   

    你在事件加一个条件呢.if(选中){MessageBox.show();}  不过我也没试过.
      

  3.   

    报错   指定的参数已超出有效值的范围。参数名:index
      

  4.   

    楼上两位何不写一小段代码试试,我是之前加了两句,所以一定是有选中的內容的。   
    listView1.Items.Add("abc").SubItems.Add("cc");
    listView1.Items.Add("cde").SubItems.Add("dd");
      

  5.   

    没错,那就是Items的索引越界了.你仔细检查一下Items.Count 是否等于0
      

  6.   

    private void listView1_SelectedIndexChanged(object sender, System.EventArgs e)
    {
    try
    {
    MessageBox.Show(listView1.SelectedItems[0].SubItems[0].Text);
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message); 
    }
    }
    我改成这样后,我选了一下,会先报错,然后显示我选中的內容,这时为什么
      

  7.   

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

  8.   

    加个条件if(listView1.SelectedItems[0].SubItems[0] != null)