从动态生成的文本框中获取值到XML

本文关键字:获取 XML 文本 动态 | 更新日期: 2023-09-27 18:18:32

我动态添加了89个文本框。我想让文本框的值为xml。我可以添加文本框很好问题是我不能动态地获得这些值添加文本框。

例如,我想获得值从textBox1到节点"F1"在XML,从textBox2到节点"F2"在XML。

private void button1_Click(object sender, EventArgs e)
{  
    XmlNodeList xnList;
    XmlDocument doc = new XmlDocument();
    string dosyayolu = Application.StartupPath + "''coupling.xml";
    doc.Load(dosyayolu);
    if (globaller.hangimenu == "TWT1")
    {
        xnList = doc.SelectNodes("/coup/TWT1");
    }
    else
    {
        xnList = doc.SelectNodes("/coup/TWT2");
    }
    for (int i = 0; i < 89; i++)
    {
        foreach (XmlNode xn in xnList)
        {
            xn["F" + (i + 1).ToString()].InnerText = "k";
            // xn["F1"].InnerText = textBox1.Text;
        }
    }
    doc.Save(dosyayolu);
}

从动态生成的文本框中获取值到XML

您可以使用扩展名ChildrenOfType<T>()。假设grid是所有文本框的父级…

var textBoxes= grid.ChildrenOfType<TextBox>().ToArray();
for (int i = 0; i < 89; i++)
{
    foreach (XmlNode xn in xnList)
    {
        xn["F" + (i + 1).ToString()].InnerText = "k";
        xn["F1"].InnerText = textBoxes[ i ].Text;
    }
}

我猜你的文本框的名称是textBox1, textBox2, ....另外,你的xml节点从F1开始,而不是F2,所以我改变了For循环位

for (int i = 1; i < 90; i++)
  {
      foreach (XmlNode xn in xnList)
      {
          // this if textboxes on form, yourUserControlName if it is under a usercontrol
          var tb = (TextBox)this.Controls["textBox" + i];
          xn["F" + i].InnerText = tb.Text;
      }
  }

为支持Hassan Nisar的评论而编辑

你可以这样做:

//create
StackPanel sp = new StackPanel();
for(int i=0;i<89;i++)
{
    TextBox tb = new TextBox();
    sp.Children.Add(tb);
}
//get
foreach(TextBox tb in sp.Children)
{
}

或者您可以将所有文本框添加到列表中,并通过索引

从列表中获取它们
相关文章: