上传 .txt 文件后列表视图中出现巨大间隙 (C#)
Massive Gap in listview after uploading .txt file (C#)
我还太新,无法显示我的列表视图的样子,但这是代码:
private void openClientFileToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
OpenFileDialog OF = new OpenFileDialog();
OF.ShowDialog(this);
OF.InitialDirectory = "C:\";
OF.RestoreDirectory = true;
string file = OF.FileName;
System.IO.StreamReader sr = new System.IO.StreamReader(file);
listView1.Items.Clear();
foreach(string line in File.ReadLines(file))
{
ListViewItem lvi = new ListViewItem();
lvi.Text = sr.ReadLine();
lvi.SubItems.Add(sr.ReadLine());
lvi.SubItems.Add(sr.ReadLine());
lvi.SubItems.Add(sr.ReadLine());
lvi.SubItems.Add(sr.ReadLine());
lvi.SubItems.Add(sr.ReadLine());
lvi.SubItems.Add(sr.ReadLine());
lvi.SubItems.Add(sr.ReadLine());
listView1.Items.Add(lvi);
}
sr.Dispose();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message, "Error");
}
}
问题来了,我上传了文件,它把我的项目准确地放在了它们应该去的地方...除了列表视图开头的 7 行之外,我不知道为什么。
但是...如果我注释掉
的代码行
lvi.Text = sr.ReadLine();
巨大的差距消失了,但是第一列被完全跳过,这也不起作用。我做错了什么?
(我尝试加载到列表视图中的 .txt 文件中也没有任何空白。)
我不太清楚你为什么要同时做 File.ReadLine 和 StreamReader.ReadLine。但这是你错误的原因。你可以这样做来纠正它。
string[] lines = File.ReadAllLines("");
for(int i = 0; i < lines.Length; i= i + 8)
{
ListViewItem lvi = new ListViewItem();
lvi.Text = line[i];
lvi.SubItems.Add(line[i+1]);
lvi.SubItems.Add(line[i+2]);
lvi.SubItems.Add(line[i+3]);
lvi.SubItems.Add(line[i+4]);
lvi.SubItems.Add(line[i+5]);
lvi.SubItems.Add(line[i+6]);
lvi.SubItems.Add(line[i+7]);
listView1.Items.Add(lvi);
}
您将需要错误处理来确保万无一失。
我还太新,无法显示我的列表视图的样子,但这是代码:
private void openClientFileToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
OpenFileDialog OF = new OpenFileDialog();
OF.ShowDialog(this);
OF.InitialDirectory = "C:\";
OF.RestoreDirectory = true;
string file = OF.FileName;
System.IO.StreamReader sr = new System.IO.StreamReader(file);
listView1.Items.Clear();
foreach(string line in File.ReadLines(file))
{
ListViewItem lvi = new ListViewItem();
lvi.Text = sr.ReadLine();
lvi.SubItems.Add(sr.ReadLine());
lvi.SubItems.Add(sr.ReadLine());
lvi.SubItems.Add(sr.ReadLine());
lvi.SubItems.Add(sr.ReadLine());
lvi.SubItems.Add(sr.ReadLine());
lvi.SubItems.Add(sr.ReadLine());
lvi.SubItems.Add(sr.ReadLine());
listView1.Items.Add(lvi);
}
sr.Dispose();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message, "Error");
}
}
问题来了,我上传了文件,它把我的项目准确地放在了它们应该去的地方...除了列表视图开头的 7 行之外,我不知道为什么。
但是...如果我注释掉
的代码行 lvi.Text = sr.ReadLine();
巨大的差距消失了,但是第一列被完全跳过,这也不起作用。我做错了什么?
(我尝试加载到列表视图中的 .txt 文件中也没有任何空白。)
我不太清楚你为什么要同时做 File.ReadLine 和 StreamReader.ReadLine。但这是你错误的原因。你可以这样做来纠正它。
string[] lines = File.ReadAllLines("");
for(int i = 0; i < lines.Length; i= i + 8)
{
ListViewItem lvi = new ListViewItem();
lvi.Text = line[i];
lvi.SubItems.Add(line[i+1]);
lvi.SubItems.Add(line[i+2]);
lvi.SubItems.Add(line[i+3]);
lvi.SubItems.Add(line[i+4]);
lvi.SubItems.Add(line[i+5]);
lvi.SubItems.Add(line[i+6]);
lvi.SubItems.Add(line[i+7]);
listView1.Items.Add(lvi);
}
您将需要错误处理来确保万无一失。