尝试从txt文件填充文本框和列表视图

时间:2015-05-12 07:16:22

标签: 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 = 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();
               }
            }
        }
    }

任何提示都将不胜感激。

3 个答案:

答案 0 :(得分:3)

你只需要通过' \ t'字符,它将返回字符串[]。然后只需将这些数组项添加到listview。

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

答案 1 :(得分:0)

据我所知,你没有把字符串放入ListView

你会想做这样的事情:

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

答案 2 :(得分:0)

您需要在阅读时撤消所有操作

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));
               }
           }
        }
    }
}