System.ArgumentOutOfRangeException: InvalidArgument=“1”的值对于“index”无效。
参数名: index
绑定的listview 当点击的时候出现这情况 怎么解决呢?

解决方案 »

  1.   

    http://topic.csdn.net/u/20100612/16/d439eef1-e4df-4a8b-8ceb-50370a22f637.html
    希望对你有帮助
      

  2.   

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Collections;
    using System.IO;
    namespace 日记本
    {
        public partial class Form2 : Form
        {        public Form2()
            {
                InitializeComponent();
            }
            string path = Application.StartupPath + "\\" + "file.txt";
            private void BtnSaveriji_Click(object sender, EventArgs e)
            {
                string title = txttitle.Text;
                string type = comType.Text;
                string tq = comtq.Text;
                string time = dateTimePicker1.Text;
                string content = myRichTextBox1.Text;
                string info = title + "," + type + "," + tq + "," + time + "," + content;
                WriteFileAdd(path,info);
                al = ReadFile(path);
                BdListView(al);
                MessageBox.Show("保存成功","提示");        }
            //写入
            public void WriteFileAdd(string path, string info)
            {
                StreamWriter sw = new StreamWriter(path, true, Encoding.UTF8);
                sw.WriteLine(info);
                sw.Close();
            }
            public ArrayList ReadFile(string path)
            {
                ArrayList al = new ArrayList();
                if (File.Exists(path))
                {
                    //读出来
                    StreamReader sr = new StreamReader(path, Encoding.UTF8);
                    while (sr.Peek() >= 0)
                    {
                        al.Add(sr.ReadLine());
                    }
                    sr.Close();
                }
                return al;
            }
            public void WriteFile(string path, ArrayList al)
            {
                StreamWriter sw = new StreamWriter(path, false, Encoding.UTF8);
                foreach (string s in al)
                {
                    sw.WriteLine(s);
                }
                sw.Close();
            }
        
            ArrayList al = null;
            public void BdListView(ArrayList al)
            {
                listView1.Items.Clear();
                //在ListView里面显示
                foreach (string s in al)
                {
                    string[] str = s.Split(',');
                    ListViewItem li = listView1.Items.Add(str[0]);                for (int i = 1; i < listView1.Columns.Count; i++)
                    {
                        li.SubItems.Add(str[i]);
                    }
                }
            }
            public int indexs;
            private void listView1_SelectedIndexChanged(object sender, EventArgs e)
            {
                if (listView1.SelectedItems.Count > 0)
                {
                    ListViewItem li = new ListViewItem();
                    txttitle.Text=li.SubItems[0].Text;
                    comType.Text = li.SubItems[1].Text;
                    comtq.Text=li.SubItems[2].Text;
                    dateTimePicker1.Text=li.SubItems[3].Text;
                    myRichTextBox1.Text=li.SubItems[4].Text;
                    string re = li.SubItems[0].Text + li.SubItems[1].Text + li.SubItems[2].Text + li.SubItems[3].Text + li.SubItems[4].Text;
                    indexs = al.IndexOf(re);
                }
            }        private void 删除日记ToolStripMenuItem_Click(object sender, EventArgs e)
            {            if (listView1.SelectedItems.Count > 0)
                {
                    listView1.Items.Remove(listView1.SelectedItems[0]);
                    //把本地的信息也删除掉
                    al.RemoveAt(indexs);
                    //    //再一次写在本地
                    WriteFile(path, al);
                    al = ReadFile(path);
                    BdListView(al);
                }
            }        private void Form2_Load(object sender, EventArgs e)
            {
                al = ReadFile(path);
                BdListView(al);
            }    }
    }
      

  3.   

    看看BdListView中的listView1.Items.Clear();会不会触发listView1_SelectedIndexChanged,这样就有可能引发越界访问错误,你组好在listView1_SelectedIndexChanged中加一个容错的判断吧
      

  4.   

    private void listView1_SelectedIndexChanged(object sender, EventArgs e)
       {
       if (listView1.SelectedItems.Count > 0)
       {
       ListViewItem li = new ListViewItem();
       txttitle.Text=li.SubItems[0].Text;
       comType.Text = li.SubItems[1].Text;
       comtq.Text=li.SubItems[2].Text;
       dateTimePicker1.Text=li.SubItems[3].Text;
       myRichTextBox1.Text=li.SubItems[4].Text;
       string re = li.SubItems[0].Text + li.SubItems[1].Text + li.SubItems[2].Text + li.SubItems[3].Text + li.SubItems[4].Text;
       indexs = al.IndexOf(re);
       }
       }
    刚才是ListViewItem li = new ListViewItem();错了 改成ListViewItem li = listView1.SelectedItems[0];后 变成InvalidArgument=“3”的值对于“index”无效。就是 dateTimePicker1.Text=li.SubItems[3].Text;出错了  怎么解决呢