所以基本上我想将列表数据保存到csv。但是唯一保存在文件中的是:System.Collections.Generic.List`1 [WindowsFormsApp1.Autok],我不知道该如何解决,作者搞砸了
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
List<Autok> aLista = new List<Autok>();
Autok a = new Autok();
public Form1()
{
InitializeComponent();
}
private void button2_Click(object sender, EventArgs e)
{
string NewGUID = System.Guid.NewGuid().ToString();
tbTermekkod.Text = NewGUID.ToString();
}
private void button1_Click(object sender, EventArgs e)
{
a.Termekkod = tbTermekkod.Text;
a.Gyarto = tbGyarto.Text;
a.Tipus = tbTipus.Text;
a.Szin = tbSzin.Text;
a.Felszereltsegiszint = tbFelsz.Text;
a.Ar = Convert.ToInt32(tbAr.Text);
aLista.Add(a);
}
private void button3_Click(object sender, EventArgs e)
{
using (StreamWriter sW = new StreamWriter(@"C:\Users\Tamás\source\repos\WindowsFormsApp1\WindowsFormsApp1\bin\Debug\rainbow.csv", false, Encoding.Default))
{
foreach (Autok item in aLista)
{
sW.WriteLine(a);
sW.Close();
}
}
}
}
}
答案 0 :(得分:0)
正如克劳斯·古特(KlausGütter)所说,您每次必须创建一个新的Autok实例。为了正确保存它,我想您必须重写Autok的ToString方法。
答案 1 :(得分:0)
在button3_Click
click事件中,您正在将全局变量“ a”而不是迭代器“ item”写入文件。如果将“ a”更改为“ item”,您仍将无法获得预期的结果。正如Klaus所说,您可以覆盖Autok对象的ToString()
方法,但是我认为一个更好的主意是使用CSV库(强烈推荐CsvHelper)。然后,您可以将代码更改为:
private void button3_Click(object sender, EventArgs e)
{
using (StreamWriter sW = new StreamWriter(@"C:\Users\Tamás\source\repos\WindowsFormsApp1\WindowsFormsApp1\bin\Debug\rainbow.csv", false, Encoding.Default)
{
var csvWriter = new CsvWriter( sW);
csvWriter.WriteRecords( aLista);
}
}
如果您不使用CsvHelper,则可以覆盖ToString()
并将其更改为:
private void button3_Click(object sender, EventArgs e)
{
using (StreamWriter sW = new StreamWriter(@"C:\Users\Tamás\source\repos\WindowsFormsApp1\WindowsFormsApp1\bin\Debug\rainbow.csv", false, Encoding.Default))
{
foreach (Autok item in aLista)
{
sW.WriteLine(item.ToString());
sW.Close();
}
}
}
public override string ToString()
{
var comma = ",";
return this.Termekkod + comma + this.Gyarto + comma + etc...
}
答案 2 :(得分:0)
尝试
foreach (Autok item in aLista)
{
sW.WriteLine(item.Termekkod +
item.Gyarto+
item.Tipus+
item.Szin+
item.Felszereltsegiszint +
item.Ar+"");
sW.Close();
}