我试图创建一个csv与订单的详细信息,从文本框拉。我有一个面板控件,里面有12个文本框,我想把每个文本框的文本写到csv文件的新行上,但什么也没发生,文件创建了,但没有文本。
下面是我的代码:
FileStream file = new FileStream(string.Format(@"Z:Streamorder{0}.csv", txtName.Text),FileMode.OpenOrCreate);
StreamWriter wr = new StreamWriter(file);
wr.WriteLine(txtName.Text);
wr.WriteLine(txtOrderRef.Text);
List<TextBox> textboxControls = new List<TextBox>();
foreach (TextBox controls in Panel1.Controls)
{
textboxControls.Add(controls);
}
foreach(TextBox c in textboxControls)
{
wr.WriteLine(c.Text);
Label1.Text = c.Text + "<br />";
}
wr.Close();
你不需要循环两次,你也需要检查如果控件是一个文本框,尝试使用is
结构像这样:
FileStream file = new FileStream(string.Format(@"Z:Streamorder{0}.csv", txtName.Text),FileMode.OpenOrCreate);
StreamWriter wr = new StreamWriter(file);
wr.WriteLine(txtName.Text);
wr.WriteLine(txtOrderRef.Text);
List<TextBox> textboxControls = new List<TextBox>();
foreach (var control in Panel1.Controls)
{
if(control is TextBox)
{
Textbox tb = control as TextBox;
wr.WriteLine(tb.Text);
textboxControls.Add(tb); //not needed in this context, but may be used in code elsewhere
}
}
我想你的问题在于流的关闭,你应该使用using
块
using(StreamWriter wr = new StreamWriter(file))
{
wr.WriteLine(txtName.Text);
wr.WriteLine(txtOrderRef.Text);
foreach (var control in Panel1.Controls.OfType<TextBox>())
{
wr.WriteLine(control.Text);
}
}