[英]Looping through textbox controls in a panel control
我正在尝试使用从文本框提取的订单详细信息创建一个csv。 我有一个位于其中的12个文本框的面板控件,我想将每个文本框的文本写到csv中的新行上,但是什么也没有发生,创建文件但没有文本。
这是我的代码:
FileStream file = new FileStream(string.Format(@"Z:\Stream\order{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:\Stream\order{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);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.