循环遍历面板控件中的文本框控件

本文关键字:控件 文本 循环 遍历 | 更新日期: 2023-09-27 18:09:33

我试图创建一个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);
    }
}