如何从动态添加的TextBox中读取数据到FlowLayoutPanel?

时间:2014-10-03 15:35:32

标签: winforms c#-4.0 textbox flowlayoutpanel

我已经在SQL表格的FlowlayoutPanel中动态添加了文本框,如下所示

string query = "SELECT* FROM tblA";

using (SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=DummyData;Integrated Security=True"))
{
    conn.Open();

    using (SqlCommand cmd = new SqlCommand(query, conn))
    {
        SqlDataReader reader = cmd.ExecuteReader();

        while (reader.Read())
        {
            Label objLbl = new Label();
            TextBox objText = new TextBox();
            objLbl.Text = reader["A_Name"].ToString();
            objText.Name = "txt"+reader["ID"].ToString();
            pnlFlow.Controls.Add(objLbl);
            pnlFlow.Controls.Add(objText);
        }
    }
}

工作正常。现在我遇到的问题是当用户在这些文本框中输入一些数据时。如何获取该数据以进行进一步处理?

1 个答案:

答案 0 :(得分:1)

您可以通过多种方式执行此操作,具体取决于您需要获取值的方式和时间。

如果您需要一次阅读,请执行以下操作:

foreach(Control c in pnlFlow.Controls)
{
      if c.Name.StartsWith("txt")
      // process the text box
      // you might want to use a more distinct naming pattern to be safe
      ...
}

如果您需要在不同时间单独处理它们,可以在Controls集合中按名称引用它们:

string textBoxName = "txt12345";
string valueText = ((TextBox)pnlFlow.Controls[textBoxName]).Text;

当然,两个片段都需要更好的错误处理,但我会留给你。