坚持将特定形式的文本文件加载到列表视图中
Stuck on loading specific form of text file into listview
Z:P
Y:A B C
A:B C
C:B
乙:
$:@
这是我的测试文本文件中的内容。
冒号的左侧将进入列表视图中的包列。
冒号的右侧将进入列表视图中的 D1 D2 D3 ... 列。
我一直在尝试,但一直卡在 for 循环中。它一直在说索引在数组的边界之外,即使我删除了 for 循环并将其放在
PCK.Dependency.Add(text.Split(' ')1);
sample image
private struct Package
{
public string NameOfPackage;
public List<string> Dependency;
}
List<Package> PackageList = new List<Package>();
Package PCK = new Package();
private void UI_btnLoad_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
StreamReader sr = new StreamReader(openFileDialog1.FileName);
string text;
while ((text = sr.ReadLine()) != null)
{
PCK.NameOfPackage = text.Split(':')[0];
for (int i = 1; i < 10; i++)
{
PCK.Dependency.Add(text.Split(' ')[i]); //Problem here
}
PackageList.Add(PCK);
}
ListViewItem lvi = new ListViewItem(PCK.NameOfPackage.ToString());
for(int i = 1; i < 10; i++)
{
lvi.SubItems.Add(PCK.Dependency[i].ToString());
}
listView1.Items.Add(lvi);
}
}
}
}
我不知道我的问题是什么...请给我一个建议!谢谢。
从 while 循环开始,您应该用这段代码代替。 foreach-loop 确保您不会访问超出数组限制的范围。同样,当您将元素添加到 ListView 时。永远不要使用带有幻数作为上限的循环。
您还在原始循环中做了 10 次相同的拆分,这就像早上系鞋带 10 次一样没用。
while ((text = sr.ReadLine()) != null)
{
PCK.NameOfPackage = text.Split(':')[0];
string[] dependencies = text.Split(' ');
foreach(string s in dependencies)
PCK.Dependency.Add(s);
PackageList.Add(PCK);
}
ListViewItem lvi = new ListViewItem(PCK.NameOfPackage.ToString());
foreach(string d in PCK.Dependency)
lvi.SubItems.Add(d);
listView1.Items.Add(lvi);
Z:P
Y:A B C
A:B C
C:B
乙:
$:@
这是我的测试文本文件中的内容。 冒号的左侧将进入列表视图中的包列。 冒号的右侧将进入列表视图中的 D1 D2 D3 ... 列。 我一直在尝试,但一直卡在 for 循环中。它一直在说索引在数组的边界之外,即使我删除了 for 循环并将其放在
PCK.Dependency.Add(text.Split(' ')1);
sample image
private struct Package
{
public string NameOfPackage;
public List<string> Dependency;
}
List<Package> PackageList = new List<Package>();
Package PCK = new Package();
private void UI_btnLoad_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
StreamReader sr = new StreamReader(openFileDialog1.FileName);
string text;
while ((text = sr.ReadLine()) != null)
{
PCK.NameOfPackage = text.Split(':')[0];
for (int i = 1; i < 10; i++)
{
PCK.Dependency.Add(text.Split(' ')[i]); //Problem here
}
PackageList.Add(PCK);
}
ListViewItem lvi = new ListViewItem(PCK.NameOfPackage.ToString());
for(int i = 1; i < 10; i++)
{
lvi.SubItems.Add(PCK.Dependency[i].ToString());
}
listView1.Items.Add(lvi);
}
}
}
}
我不知道我的问题是什么...请给我一个建议!谢谢。
从 while 循环开始,您应该用这段代码代替。 foreach-loop 确保您不会访问超出数组限制的范围。同样,当您将元素添加到 ListView 时。永远不要使用带有幻数作为上限的循环。
您还在原始循环中做了 10 次相同的拆分,这就像早上系鞋带 10 次一样没用。
while ((text = sr.ReadLine()) != null)
{
PCK.NameOfPackage = text.Split(':')[0];
string[] dependencies = text.Split(' ');
foreach(string s in dependencies)
PCK.Dependency.Add(s);
PackageList.Add(PCK);
}
ListViewItem lvi = new ListViewItem(PCK.NameOfPackage.ToString());
foreach(string d in PCK.Dependency)
lvi.SubItems.Add(d);
listView1.Items.Add(lvi);