C#记事本中数据导入到listView提示索引超出了数组界限。如何解决啊大哥们帮忙看下
C#记事本中数据导入到listView提示索引超出了数组界限。怎么解决啊,大哥们帮忙看下
OpenFileDialog Ofd = new OpenFileDialog();
Ofd.Filter = "文本文档(*.txt)|*.txt";
if (Ofd.ShowDialog() == DialogResult.OK)
{
string[] Txts = File.ReadAllLines(Ofd.FileName);
if (Txts.Length != -1)
{
for (int i = 1; i <= Txts.Length; i++)
{
ListViewItem Lvi = new ListViewItem();
Lvi.Text = (listView_userNameList.Items.Count + 1).ToString();
string[] Unames = Regex.Split(Txts[i], "----");
Lvi.SubItems.Add(Unames[0]);
Lvi.SubItems.Add(Unames[1]);
Lvi.SubItems.Add("状态");
listView_userNameList.Items.Add(Lvi);
}
}
}
------解决思路----------------------
------解决思路----------------------
在vs上,抛出异常时,vs自动就入了调试状态。你在那里调试一下 Txts[i] 自己就知道为什么了。
------解决思路----------------------
改两个地方
if (Txts.Length > 0)
for (int i = 0; i <= Txts.Length -1 ; i++)
------解决思路----------------------
数组的下标是从 0 算起的
------解决思路----------------------
c#里面索引从0开始,sql里面从1开始
------解决思路----------------------
1、撸主,先自己单步调试一下,超出索引,一般是数组越界访问导致的
2、数组的索引是从零开始的,也就是最大索引是(数组长度-1)
3、代码改成
或者
OpenFileDialog Ofd = new OpenFileDialog();
Ofd.Filter = "文本文档(*.txt)|*.txt";
if (Ofd.ShowDialog() == DialogResult.OK)
{
string[] Txts = File.ReadAllLines(Ofd.FileName);
if (Txts.Length != -1)
{
for (int i = 1; i <= Txts.Length; i++)
{
ListViewItem Lvi = new ListViewItem();
Lvi.Text = (listView_userNameList.Items.Count + 1).ToString();
string[] Unames = Regex.Split(Txts[i], "----");
Lvi.SubItems.Add(Unames[0]);
Lvi.SubItems.Add(Unames[1]);
Lvi.SubItems.Add("状态");
listView_userNameList.Items.Add(Lvi);
}
}
}
------解决思路----------------------
OpenFileDialog Ofd = new OpenFileDialog();
Ofd.Filter = "文本文档(*.txt)
------解决思路----------------------
*.txt";
if (Ofd.ShowDialog() == DialogResult.OK)
{
string[] Txts = File.ReadAllLines(Ofd.FileName);
for (int i = 0; i < Txts.Length; i++)
{
ListViewItem Lvi = new ListViewItem();
string[] Unames = Regex.Split(Txts[i], "----");
Lvi.SubItems.Add(Unames[0]);
Lvi.SubItems.Add(Unames[1]);
Lvi.SubItems.Add("状态");
listView_userNameList.Items.Add(Lvi);
}
Lvi.Text = Txts.Length.ToString();
}
------解决思路----------------------
在vs上,抛出异常时,vs自动就入了调试状态。你在那里调试一下 Txts[i] 自己就知道为什么了。
------解决思路----------------------
改两个地方
if (Txts.Length > 0)
for (int i = 0; i <= Txts.Length -1 ; i++)
------解决思路----------------------
数组的下标是从 0 算起的
------解决思路----------------------
c#里面索引从0开始,sql里面从1开始
------解决思路----------------------
for (int i = 1; i <= Txts.Length; i++)
1、撸主,先自己单步调试一下,超出索引,一般是数组越界访问导致的
2、数组的索引是从零开始的,也就是最大索引是(数组长度-1)
3、代码改成
for (int i = 1; i <Txts.Length; i++)
或者
for (int i = 1; i <= Txts.Length - 1; i++)