【发布时间】:2020-03-03 16:37:17
【问题描述】:
我有一个包含名字、姓氏、用户 ID 的列表视图... 为了添加用户,我使用文本框和添加按钮,这就是问题所在。 StreamWriter 保存“文本框”而不是“ListView 项目”,因此如果我将文本框留空,它会在我的文件 (.txt) 中存储一个空行。 我怎样才能让 streamwriter 保存 ListView 项目呢? 希望这是有道理的:D
代码:
private void buttonAddNewUser_Click (object sender , EventArgs e)
{
if (string.IsNullOrEmpty (firstName) || string.IsNullOrEmpty (lastName) ||
string.IsNullOrEmpty (userID)) return;
{
ListViewItem dataItems = new ListViewItem (firstName);
dataItems.SubItems.Add (lastName);
dataItems.SubItems.Add (userID);
listView1.Items.Add (dataItems);
}
}
private void btnSaveToFile_Click (object sender , EventArgs e)
{
if (File.Exists (@"D:\PersonsSaved.txt"))
{
string fullName = firstName + "," + lastName + "," + userID;
using (var writer = new StreamWriter (@"D:\PersonsSaved.txt" , true))
{
writer.WriteLine (fullName);
MessageBox.Show ("User(s) has been saved!");
}
}
}
private void Form1_Load (object sender , EventArgs e)
{
string fileLocation = @"D:\PersonsSaved.txt";
List<string> userData = File.ReadAllLines (fileLocation).ToList ();
foreach (var item in userData)
{
string[ ] items = item.Split (new char[ ] { ',' });
listView1.Items.Add (new ListViewItem (items));
}
}
private void textBoxFirstName_TextChanged (object sender , EventArgs e)
{
firstName = textBoxFirstName.Text;
}
private void textBoxLastName_TextChanged (object sender , EventArgs e)
{
lastName = textBoxLastName.Text;
}
private void textBoxUserID_TextChanged (object sender , EventArgs e)
{
userID = textBoxUserID.Text;
}
【问题讨论】:
-
你需要保存listview中的每一项:
foreach(ListViewItem item in listView1.Items){ // Write to file } -
哦!谢谢!强尼
-
@JohnnyMopp 你好,我一直在试验你给我的东西。但它并没有像我想要的那样结束。所以我做了别的东西,但在文本文件中它最终是这样的:ListViewItem:{firstname},ListViewSubItem:{lastname},ListViewSubItem:{userID}。无论如何要删除“listviewitem”
-
最后一件事,我忘了补充一点,如果我使用你的方式,结果将是:ListViewItem: {firstname} only。也许我不明白。
-
您需要使用
Text字段。我已经输入了答案。