繁体   English   中英

在面板控件中循环浏览文本框控件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM