c#-尝试从txt文件填充文本框和listview

时间:2019-10-10 11:40:42

标签: c# winforms file streamreader

我只能加载文本框,似乎无法填充列表视图。但是,删除this.textBox1.Text = sr.ReadToEnd();后,列表视图已填充。这是代码:

using (StreamReader sr = new StreamReader(openFileDialog1.FileName))
{
    string line = String.Empty;
    this.textBox1.Text = sr.ReadToEnd(); // remove it, listview working
    while ((line = sr.ReadLine()) != null)
    {
        string[] data = line.Split(new char[0]);
        ListViewItem item = new ListViewItem
        {
            Text = data[0]
        };
        item.SubItems.Add(data[1]);
        listView1.Items.Add(item);
    }
}

屏幕截图: GCC documentation Img1

3 个答案:

答案 0 :(得分:1)

好吧,php-pecl-uopz会读取文件直到其结尾,这就是sr.ReadToEnd()毫无用处的原因。

让我们逐行读取文件 并更新ReadLine()(我们将其分配给text)和this.textBox1.Text

listView1.Items

答案 1 :(得分:0)

您可以使用以下内容。

ReadToEnd这样做:从当前位置到流的末尾读取所有字符。您正在失去流的位置。

using (StreamReader sr = new StreamReader(openFileDialog1.FileName))
{
    string line = String.Empty;
    StringBuilder sb = new StringBuilder();
    // this.textBox1.Text = sr.ReadToEnd(); // remove it, listview working
    while ((line = sr.ReadLine()) != null)
    {
        string[] data = line.Split(new char[0]);
        ListViewItem item = new ListViewItem
        {
            Text = data[0]
        };
        item.SubItems.Add(data[1]);
        listView1.Items.Add(item);
        sb.AppendLine(line);
    }
    this.textBox1.Text = sb.ToString();
}

答案 2 :(得分:0)

您可以尝试以下方法:

string filename = openFileDialog1.FileName;
var lines = File.ReadAllLines(filename);
textBox1.Text = string.Join(Environment.NewLine, lines);
foreach ( string line in lines )
{
  var items = line.Split(new char[0]);
  if ( items.Length > 0 )
  {
    var item = new ListViewItem(items[0]);
    if ( items.Length > 1 )
      item.SubItems.Add(items[1]);
    listView1.Items.Add(item);
  }
}