[英]C# how to save userinput in windows form
我目前正在尝试制作一个小程序,将用户在文本框中的输入存储到文件中,但是由于某种原因我无法将输入保存到文件中,这是我到目前为止所做的:
头等舱:
class Name
{
private string SongName;
private string ArtistName;
//Constructor
public Name(string SongName, string ArtistName)
{
this.ArtistName = ArtistName;
this.SongName = SongName;
}
//Properties for SongName
public string songName
{
get { return SongName; }
set { SongName = value; }
}
//Properties for ArtistName
public string artistName
{
get { return ArtistName; }
set { ArtistName = value; }
}
}
这是Form1代码:
public Form1()
{
InitializeComponent();
}
private string SongName, ArtistName;
public void Registry()
{
List<Name> MusicList = new List<Name>();
MusicList.Add(new Name(SongName = txtSongName.Text , ArtistName = txtArtistName.Text)); //Add new elements to the NameClass
//Save the list
StreamWriter FileSaving = new StreamWriter("MusicList");
for (int i = 0; i < MusicList.Count; i++)
{
string sName = MusicList[i].songName;
string aName = MusicList[i].artistName;
}
FileSaving.Close();
}
private void btnEnter_Click(object sender, EventArgs e)
{
Registry();
//Set the textbox to emty so the user can enter new data
txtArtistName.Text = "";
txtSongName.Text = "";
}
....您永远不会在文件中写入任何内容.....
注意对file.WriteLine(line);
的调用file.WriteLine(line);
还...您意识到您没有在创建带有扩展名的文件吗?
在for循环中,您需要实际将值写入流中。
for (int i = 0; i < MusicList.Count i++)
{
string sName = MusicList[i].songName;
string aName = MusicList[i].artistName;
FileSaving.WriteLine(sName + ' ' + aName);
}
在这里,您正在创建StreamWriter
但从未使用过它:
StreamWriter FileSaving = new StreamWriter("MusicList");
for (int i = 0; i < MusicList.Count; i++)
{
string sName = MusicList[i].songName;
string aName = MusicList[i].artistName;
}
FileSaving.Close();
字符串aName和sName被分配给但从未保存。
请参阅此处有关使用StreamWriter的示例:
http://msdn.microsoft.com/en-us/library/system.io.streamwriter.aspx
using (StreamWriter writer = new StreamWriter(filePath))
{
for (int i = 0; i < MusicList.Count; i++)
{
writer.WriteLine(MusicList[i].songName + " , " + MusicList[i].artistName);
}
}
我认为您应该使用XML序列化
这是我的序列化通用类
public static class Serializer<T>
{
public static T Deserialize(string path)
{
System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(T));
System.IO.FileStream stream = null;
try
{
stream = new System.IO.FileStream(path, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.Read);
return (T)serializer.Deserialize(stream);
}
finally
{
if (stream != null)
{
stream.Close();
stream.Dispose();
}
}
}
public static void Serialize(string path, T obj, bool createFolder = false)
{
System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(T));
if (createFolder)
{
System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(path));
}
using (System.Xml.XmlTextWriter xmlWriter = new System.Xml.XmlTextWriter(path, System.Text.Encoding.Unicode))
{
xmlWriter.Formatting = System.Xml.Formatting.Indented;
serializer.Serialize(xmlWriter, obj);
xmlWriter.Flush();
xmlWriter.Close();
}
}
}
然后在注册方法中
public void Registry()
{
List<Name> MusicList = new List<Name>();
MusicList.Add(new Name(SongName = txtSongName.Text , ArtistName = txtArtistName.Text)); //Add new elements to the NameClass
Serializer<List<Name>>.Serialize(@"C:\saved.xml", MusicList);
}
请注意,您必须在类Name中添加默认构造函数
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.