总会弹出这个错误 下面代码   刚刚学习C#对listview还不是很熟悉,请问下,这个怎么改才可以显示正常
就是在第二格状态也可以显示  
下面是代码  
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Net;
using System.Text.RegularExpressions;namespace 登录家园
{
    public partial class Form1 : Form
    {
        string Sid,result;
        int index=-1,Sindex;
        bool isRun;
        public Form1()
        {
            InitializeComponent();
            Control.CheckForIllegalCrossThreadCalls = false;
        }        private void 导入SidToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog fileDialog = new OpenFileDialog();
            fileDialog.Multiselect = true;
            fileDialog.Title = "请选择文件";
            fileDialog.Filter = "文本文件(*.txt)|*.txt";
            if (fileDialog.ShowDialog() == DialogResult.OK)
            {
                string file = fileDialog.FileName;
                FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read);
                StreamReader sr = new StreamReader(fs, Encoding .Default );
                string line;
                while ((line = sr.ReadLine()) != null)
                {
                    listView1.Items.Add(line);
                }
            }
        }        private void 清空SidToolStripMenuItem_Click(object sender, EventArgs e)
        {
            listView1.Items.Clear();
        }        private void 开始操作ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            isRun = true;
            Thread thread = new Thread(login );
            thread.Start();
        }        private void login()
        {
            try
            {
                while (isRun)
                {
                    CookieContainer cookie = new CookieContainer();                    if ((index+1) <= this.listView1.Items.Count-1)
                    {
                        index++;
                        this.Sindex = index;
                    }
                    else
                    {
                        this.groupBox1.Text = "运行完毕";
                        break;
                    }
                   
                    Console.WriteLine(index);
                    Sid = this.listView1.Items[index ].SubItems[0].Text;
                    string url = string.Format("http://house60.3g.qq.com/g/my_home.jsp?sid={0}&g_ut=1", Sid);
                     result = http.HttpGET(url, "", cookie, 5000);                     if (result.Contains("更新心情"))
                     {
                         this.listView1.Items[index].SubItems[1].Text = "登录成功";
                     }
                     else
                     {
                         this.listView1.Items[index].SubItems[1].Text = "登录失败";
                     }
     
                    result = Regex.Replace(result, Environment.NewLine, "");
                    result = Regex.Replace(result, "</p>", Environment.NewLine);
                    result = Regex.Replace(result, "<br/>", Environment.NewLine);
                    result = Regex.Replace(result, "</title>([\\S\\s]*)<body>", "");
                    this.textBox1.Text = Regex.Replace(result, "<(.|\n)+?>", "");                }
            }
            catch (Exception ex)
            {
                
                MessageBox .Show (ex.Message );
            }
         
        }
     
      
    }
}

解决方案 »

  1.   

    refer:http://blog.csdn.net/chinacsharper/article/details/9865491
      

  2.   

    看错误,应该是当前没有这个 index。
    空记录。
      

  3.   

    //listView1.Items.Add("1");
                //ListViewItem it = listView1.Items[0] as ListViewItem;
                //it.SubItems[1].Text = "2"; ///<- - 只有一个SubItem对象,索引1会抱错
                string[] items = new string[2];
                items[0] = "1";
                ListViewItem it = new ListViewItem(items);
                listView1.Items.Add(it);            it = listView1.Items[0] as ListViewItem;
                it.SubItems[1].Text = "2";