listview 问题

牛哥_ 2012-04-13 09:39:28
System.ArgumentOutOfRangeException: InvalidArgument=“1”的值对于“index”无效。
参数名: index
绑定的listview 当点击的时候出现这情况 怎么解决呢?
...全文
167 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
牛哥_ 2012-04-13
  • 打赏
  • 举报
回复
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;出错了 怎么解决呢
bdmh 2012-04-13
  • 打赏
  • 举报
回复
看看BdListView中的listView1.Items.Clear();会不会触发listView1_SelectedIndexChanged,这样就有可能引发越界访问错误,你组好在listView1_SelectedIndexChanged中加一个容错的判断吧
牛哥_ 2012-04-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

http://topic.csdn.net/u/20100612/16/d439eef1-e4df-4a8b-8ceb-50370a22f637.html
希望对你有帮助
[/Quote]
看了 看不懂
牛哥_ 2012-04-13
  • 打赏
  • 举报
回复
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);
}

}
}
orochiheart 2012-04-13
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20100612/16/d439eef1-e4df-4a8b-8ceb-50370a22f637.html
希望对你有帮助
weiaizoutianya11 2012-04-13
  • 打赏
  • 举报
回复
贴出代码来看看

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧