C# 尝试从txt文件填充textbox和listview

C# 尝试从txt文件填充textbox和listview,c#,user-interface,listview,C#,User Interface,Listview,我可以使用以下方法将文本框文本和listview项正确保存到txt文件: private void saveToolStripMenuItem_Click(object sender, EventArgs e) { if (saveFileDialog1.ShowDialog(this) == System.Windows.Forms.DialogResult.OK) { using (StreamWriter writer = n

我可以使用以下方法将文本框文本和listview项正确保存到txt文件:

private void saveToolStripMenuItem_Click(object sender, EventArgs e)
    {
        if (saveFileDialog1.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
        {
            using (StreamWriter writer = new StreamWriter(saveFileDialog1.FileName))
            {
                //writer.WriteLine(accountText.Text);
                writer.WriteLine(accountText.Text);

                if (transactionList.Items.Count > 0)
                {
                    foreach (ListViewItem item in transactionList.Items)
                    {
                        StringBuilder newString = new StringBuilder();
                        foreach (ListViewItem.ListViewSubItem listSub in item.SubItems)
                        {
                            newString.Append(string.Format("{0}\t", listSub.Text));
                        }
                        writer.WriteLine(newString.ToString());
                    }
                    writer.WriteLine();
                }
            }
        }
    }
但是,我只能加载文本框,似乎无法填充listview。以下是迄今为止我所做的:

private void openToolStripMenuItem_Click(object sender, EventArgs e)
    {
        if (openFileDialog1.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
        {
            using (StreamReader reader = new StreamReader(openFileDialog1.FileName))
            {
                accountText.Text = reader.ReadLine();

               if (transactionList.Items.Count == 0)
               {
                   foreach (ListViewItem item in transactionList.Items)
                   {
                       StringBuilder myString = new StringBuilder();
                       foreach (ListViewItem.ListViewSubItem listSub in item.SubItems)
                       {
                           myString.Append(string.Format("{0}\t", listSub.Text));
                       }
                       reader.Read();
                   }
                   reader.ReadToEnd();
               }
            }
        }
    }

任何提示都将不胜感激。

据我所知,您没有将字符串放入
列表视图中

您将希望执行以下操作:

foreach (ListViewItem.ListViewSubItem listSub in item.SubItems)
{
    myString.Append(string.Format("{0}\t", listSub.Text));
    listSub.Text = myString.ToString();
}

你需要在阅读时扭转你所有的动作

private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
    if (openFileDialog1.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
    {
        using (StreamReader reader = new StreamReader(openFileDialog1.FileName))
        {
            accountText.Text = reader.ReadLine();

               while(!reader.EndOfStream)
               {
                   var myString = reader.ReadLine();
                   var subitems = myString.Split("\t");
                   // Create ListItem and assign subItems here...
                   transactionList.Items.Add(new ListviewItem(subitems));
               }
           }
        }
    }
}

只需按“\t”字符分割字符串,它将返回字符串[]。然后只需将这些数组项添加到listview

string[] items = reader.ReadLine().Split('\t');
foreach (var item in items)
{
    var listViewItem = new ListViewItem(item);
    transactionList.Items.Add(listViewItem);    
}

你有一个
if(transactionList.Items.Count==0)
,如果它是0,你就有一个
foreach(transactionList.Items中的ListViewItem项目)
…但是如果列表中没有项目,什么都不会发生…?是的,我在发布之前忘了更改它。在输入问题和保留问题之间,我改变了一些事情。谢谢你的提醒。我有种感觉就是这样的。我试试看。谢谢你,那帮了大忙!